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. [转]Oracle执行计划详解

    Oracle执行计划详解 --- 作者:TTT BLOG 本文地址:http://blog.chinaunix.net/u3/107265/showart_2192657.html --- 简介:   ...

  2. 重构手法之Split Temporary Variable(分解临时变量)

    返回总目录 本小节目录 Split Temporary Variable(分解临时变量) Remove Assignments to Parameters(移除对参数的赋值) 6.6Split Tem ...

  3. SQL Server 的常见约束

    1.主键约束------我是最常见的哦(PRIMARY KEY) 限制:不能为空,数据唯一,一个表中只有一个 方法: 建表时直接在列类型后面添加   如: CREATE TABLE stuDB ( S ...

  4. MyBatis开发学习记录

    使用MyBatis时主要是完成POJO和SQL的映射规则 MyBatis基本构成: SqlSessionFactoryBuilder SqlSessionFactory SqlSession SqlM ...

  5. [最短路]P1119 灾后重建

    题目背景 B地区在地震过后,所有村庄都造成了一定的损毁,而这场地震却没对公路造成什么影响.但是在村庄重建好之前,所有与未重建完成的村庄的公路均无法通车.换句话说,只有连接着两个重建完成的村庄的公路才能 ...

  6. LINQ学习系列-----2.2 迭代器

    在学习本篇迭代器之前,强烈建议可以先学习一位具有工匠精神博主的文章,链接如下: 农码一生---先说IEnumerable,我们每天用的foreach你真的懂它吗? 本篇文章,是在该博主博文的基础上再次 ...

  7. 程序员的自我救赎---1.4.2: 核心框架讲解(BLL&Tool)

    <前言> <目录> (一) Winner2.0 框架基础分析 (二) 短信中心 (三)SSO单点登录 (四)PLSQL报表系统 (五)钱包系统 (六)GPU支付中心 (七)权限 ...

  8. python3中的编码与解码(超好理解)

    编码和解码是针对数据而言的,数据能干什么呢?无非就是用来显示,储存和传输的: 储存和传输数据当然是希望数据越小越好,所以发明了utf-8这种数据编码显示:它智能将英文用一个字节表示,欧洲的字符用两个字 ...

  9. mysql事务使用 超简单

    MySQL的事务支持不是绑定在MySQL服务器本身,而是与存储引擎相关1.MyISAM:不支持事务,用于只读程序提高性能 2.InnoDB:支持ACID事务.行级锁.并发 3.Berkeley DB: ...

  10. Nginx实现https网站配置

    咱们下面以google代理实现的方式来实现https.注意这里的https与google的https无关. 代码如下.有备注/usr/local/nginx/config/vhost/hk.cn331 ...