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. 基础拾遗-----mongoDB操作

    基础拾遗 基础拾遗------特性详解 基础拾遗------webservice详解 基础拾遗------redis详解 基础拾遗------反射详解 基础拾遗------委托详解 基础拾遗----- ...

  2. Android Oreo 8.0 新特性实战 Autosizing TextView --自动缩放TextView

    Android Oreo 8.0 新特性实战 Autosizing TextView --自动缩放TextView 8.0出来很久了,这个新特性已经用了很久了,但是一直没有亲自去试试.这几天新的需求来 ...

  3. PHP截取带有汉字的字符串,将汉字按两个字节计算

    <?php header("Content-type:text/html;charset=utf-8"); /** *截取字符串,汉字占两个字节,字母占一个字节 *页面编码必 ...

  4. Chapter 6: The Memory Hierarchy

    Disk Geometry: 磁盘的结构如图,每个面为surface,surface上的同心圆为track,track包含sector,不同的surface的同半径track构成cylinder.越外 ...

  5. vue+node+webpack搭建环境

    一.环境搭建 1.1.去官网安装node.js( http://www.runoob.com/nodejs/nodejs-install-setup.html  ) 注意node的版本,只有支持和谐模 ...

  6. Error parsing column 8 (IsRecommended=0 - SByte) Dapper查询mysql数据库可空的tinyint(1)一个错误

    出错条件: 1.实体属性为bool?类型 2.对应字段为可空的tinyint(1)类型 3.该字段查询结果内即含有null,又含有正常值 google答案,两种建议: 1.修改sql语句,直接cast ...

  7. pymysql 模块介绍

    pymysql模块是python与mysql进行交互的一个模块. pymysql模块的安装: pymysql模块的用法: import pymysql user=input('user>> ...

  8. bootstarp-fileinput上传 火狐防止拖入文件直接打开新页面

    今日接触了一个bootstarp的上传插件,发现其功能很强大,具体名为bootstarp-fileinput,需要的可以自行度一下. 然后当使用其拖拽功能时,其他浏览器没出毛病,独火狐浏览器拖入时直接 ...

  9. Android APP 性能优化的一些思考

    说到 Android 系统手机,大部分人的印象是用了一段时间就变得有点卡顿,有些程序在运行期间莫名其妙的出现崩溃,打开系统文件夹一看,发现多了很多文件,然后用手机管家 APP 不断地进行清理优化 ,才 ...

  10. (翻译)使用Api分析器与Windows兼容包来编写智能的跨平台.NET Core应用

    本文翻译自Scott Hanselman博客: https://www.hanselman.com/blog/WritingSmarterCrossplatformNETCoreAppsWithThe ...