function searchFun() {
var zTrees=$.fn.zTree.getZTreeObj("ztree");//获得所有几点
var hiddenNodes=[];//显示的数组
var code2=$("#code2").val();
var code2Arr=new Array();//code搜索数组
var proArr=new Array();//name搜索数组
var productNames=$("#productName").val();
var nodeArr=new Array();//根据条件所搜出的全部节点数组
var typeArr=[];//满足其余条件的数组
var typeArr22=[];//满足其余条件的数组
if(code2!=null && code2!=''){
var code2A=code2.split(",");
for(var i=0;i<code2A.length;i++){
if(code2A[i]!='' || code2A[i]!=null){
code2Arr.push(code2A[i]);
}
}
}
if(productNames!=null && productNames!=''){
var proA=productNames.split(",");
for(var i=0;i<proA.length;i++){
if(proA[i]!='' || proA[i]!=null){
proArr.push(proA[i]);
}
}
} var allNode = zTrees.transformToArray(zTrees.getNodes());
zTrees.hideNodes(allNode);//隐藏所有节点 if(code2Arr.length > 0 && proArr.length>0){
top.layer.msg("找不到这些商品组成的套餐");
return;
} if(code2Arr.length > 0){
nodeArr = zTrees.getNodesByParamFuzzy("name", code2Arr[0], null);//搜索含有value关键字的节点
nodeArr = zTrees.transformToArray(nodeArr);//转化为数组
}else {
nodeArr = zTrees.getNodesByParamFuzzy("name", proArr[0], null);//搜索含有value关键字的节点
nodeArr = zTrees.transformToArray(nodeArr);//转化为数组
} var currArr=new Set();//保存根据节点,相同的就覆盖
for(var n in nodeArr){//遍历
findParent(nodeArr[n],currArr);//找到其父节点
}
currArr.forEach(function (item) {//遍历根结点,并获得其所有叶子节点,包括自己
var arr=new Array();
arr.push(item);
getChildrenNode(item,arr);
typeArr.push(arr);
});
var namess=[];//每个根结点的所有节点名称的数组
if(typeArr.length>0){
for(var i=0;i<typeArr.length;i++){
var names="";
for(var n in typeArr[i]) {
names+=typeArr[i][n].name;
}
namess.push(names);
}
for(var m in namess){
if(proArr.length>0 && code2Arr.length==0){
var n=0;
for(var i in proArr){
if(namess[m].indexOf(proArr[i])>-1){
n++;
}
}
if(n==proArr.length){
typeArr22.push(typeArr[m]);
}
}else {
var n=0;
for(var i in code2Arr){
if(namess[m].indexOf(code2Arr[i])>-1){
n++;
}
}
if(n==code2Arr.length){
typeArr22.push(typeArr[m]);
}
}
}
}
if(typeArr22.length>0){
for(var i in typeArr22){
for(var j in typeArr22[i]){
hiddenNodes.push(typeArr22[i][j])
}
}
}
zTrees.showNodes(hiddenNodes);//显示满足的所有节点
/*highlightAndExpand_ztree(hiddenNodes);*/
if (code2 == "" && productNames=='') {
zTrees.expandAll(false);
}
}
/*
获取当前节点的根节点
*/
function findParent(node,currArr){
var pNode = node.getParentNode();//获取父节点
if(pNode != null){
findParent(pNode,currArr);//递归查询上上一级父节点
}else {
if(node.lvl==1){//根结点
currArr.add(node);
}
}
} /*
获取当前节点下所有的叶子节点
*/
function getChildrenNode(node,currArr) {
var children=node.children;
if(children){
for(var i in children){
currArr.push(children[i]);
if(children[i].lvl!=4){//节点等级为4的就停止执行
getChildrenNode(children[i],currArr);
}
}
}
}

zTree多条件模糊查询的更多相关文章

  1. JSP+Servlet+javabean+oracle实现页面多条件模糊查询

    之前写过一篇JSP+Servlet+javabean+mysql实现页面多条件模糊查询 使用的是mysql进行的分页查询,mysql用limit控制,而oracle则是用rownum,今天第一次写or ...

  2. asp下实现多条件模糊查询SQL语句

    常写一个简单的模糊查询的SQL语句格式可以如下例: sql="select * from 表名 where 字段名 like ’%" & request.form(&quo ...

  3. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(20)-多条件模糊查询和回收站还原的实现

    原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(20)-多条件模糊查询和回收站还原的实现 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇)   (1):框架 ...

  4. 实现多条件模糊查询SQL语句

    很多网友问到如何写模糊查询语句和多条件查询,这里我整理了一下,假设以姓名.性别.电话号...作为数据库中的字段名. 通常写一个简单的模糊查询的SQL语句格式可以如下例: sql="selec ...

  5. mongoose多条件模糊查询实例

    mongoose多条件模糊查询 这是今天手头项目中遇到的一个问题,关于mongoose如何实现类似于SQL中 nick LIKE '%keyword%' or email LIKE '%keyword ...

  6. thinkphp5.0多条件模糊查询以及多条件查询带分页如何保留参数

    1,多条件模糊查询 等于:map[‘id′]=array(‘eq′,100);不等于:map[‘id′]=array(‘eq′,100);不等于:map[‘id’] = array(‘neq’,100 ...

  7. laravel多条件模糊查询

    1.运用cmd在项目根目录下创建路由组 php artisan make:controller queryController --resource 1.1数据库信息(student) CREATE ...

  8. JSP+Servlet+javabean+mysql实现页面多条件模糊查询

    需求: 一般列表页上面会有一个查询框,有各种的查询条件组合,一般都采用模糊查询方式 ,以下以自己做的实例来说明一下实现方法: 需要实现的界面原型:要满足条件: 1.单选分类,点GO按扭 2.单独输入标 ...

  9. 【转】SQL多条件模糊查询解决方案-存储过程

    前言:   算法的基本特性在前几篇博客中已经做了详细的说明,经过不断的改进优化,到归仓的时候了,也就是说,该算法告一段落,不再更新. 作为最终的解决方案,简要的总结一下算法特性,以方便读者参阅. l ...

随机推荐

  1. iOS 远程推送消息解析及逻辑处理

    关于远程推送的相关配置网上已经有足够多的教程,这里就不复述了.这里讲述当客户端收到推送消息后,应怎样对其进行相应的逻辑处理. 工程的AppDelegate.m文件里提供了如下方法: //当应用程序启动 ...

  2. LKD: Chapter 6 Kernel Data Structures

    这一章我们研究四种主要的数据结构: linked lists, queues, maps, binary trees. Linked Lists:(<linux/list.h>) 在lin ...

  3. Linux上安装和卸载mysql数据库 (一)

    一.前言 第一次写博客,很激动同时有点畏惧,激动是我可以将我的经验进行分享,畏惧是我怕我写的东西,大家借鉴的时候,有些步骤不能成功.不过,我还是很有信息的,我分享的经验都是我搭建成功以后才分享出来.这 ...

  4. C#图片压缩上传

    /// <summary> /// 压缩图片 /// </summary> /// <param name="iSource">图片文件< ...

  5. 谈谈form-data请求格式

    最近一直都比较忙,坚持月月更新博客的计划不得中止了,今天好不容易抽出点时间来说说最近项目中遇到的一个问题,有关request post请求格式中的multipart/form-data格式. 引言 最 ...

  6. JavaScript实现动画效果

    说到JavaScript实现动画效果,不得不想到两个函数,setTimeout和setInterval. setTimeout的常用的使用方法为 setTimeout(callback, delay) ...

  7. jquery 三级关联选择效果

    在网页制作中,三级关联选择经常遇到,于是归纳了一个进行参考 代码如下: <!DOCTYPE html> <html lang="en"> <head& ...

  8. 【转】Cmder--Windows下命令行利器

    原文链接:https://www.cnblogs.com/zqzjs/archive/2016/12/19/6188605.html cmder cmder是一个增强型命令行工具,不仅可以使用wind ...

  9. java+jsp+sql server实现网页版四则运算.

    设计思路: 1需要的工具以及实现这个算法和代码的事先条件. (1)sql server里面建议一个叫t_result的表)(当然你起什么名字都可以),里面输入所需要的列名.id,firstnumber ...

  10. gitup问题的处理

    在使用本地建立git仓库后,准备使用 因为之前已经登录了,所以没有给登录的命令行 1.git init         命令初始化仓库 2.git add .     命令将所有的文件传输到git仓库 ...