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. jmockit学习

    下图为jmockit 类图.在我们编写代码时几乎都会用到Expectations(期望)和Verifications(校验),二者均继承自Invacations. 常会用到的注解有:@Mocked @ ...

  2. 斯坦福大学自然语言处理第一课——引言(Introduction)

    一.课程介绍 斯坦福大学于2012年3月在Coursera启动了在线自然语言处理课程,由NLP领域大牛Dan Jurafsky 和 Chirs Manning教授授课:https://class.co ...

  3. 关于SpringBoot bean无法注入的问题(与文件包位置有关)改变自动扫描的包

    原因:同事在写demo时出现bean加了@component后却无法被spring扫描到(在编译的时候IDEA就提示拿不到对应的bean)的问题. 后来经过研究是跟文件包的位置有关的. springb ...

  4. 安卓自定义控件(三)实现自定义View

    前面两篇博客,把View绘制的方法说了一下,但是,我们只在onDraw里面做文章,控件都是直接传入一个Context,还不能在布局文件里使用自定义View.这一篇博客,就不再讲绘制,在我们原先的基础上 ...

  5. 安卓自定义控件(二)BitmapShader、ShapeDrawable、Shape

    第一篇博客中,我已经Canvas.Paint.Shader.Xfermode这些对象做了总结,而现在这篇文章主要介绍BitmapShader位图渲染,Xfermode如何实际应用,还有形状的绘制.不过 ...

  6. 记录项目版本升级angular4 ~ angular5

    前言: 在上一篇ng4文章<angular4--实际项目搭建总结>中说过,等到ng5正式发布,并且蚂蚁的NG ZORRO兼容ng5之后,我会对ng4项目进行升级.这篇文章就是大概说下升级的 ...

  7. Django框架中的视图和模板

    视图views django中的视图就是用来定义函数来处理一些逻辑的核心地方. django中通过urls来建立路径跟views中的视图函数的映射关系. urls中的映射关系 ''' urlpatte ...

  8. 35.Linux-分析并制作环形缓冲区

    在上章34.Linux-printk分析.使用printk调试驱动里讲述了: printk()会将打印信息存在内核的环形缓冲区log_buf[]里, 可以通过dmesg命令来查看log_buf[] 1 ...

  9. 微软为.NET程序员带来了最优的跨平台开发体验-WSL

    前言 在前几个Visual Studio Code更新中发现有一个重要得特性,就是nodejs可以使用VS Code在WSL中进行Debug了(WSL是指Win10中的Linux子系统),之前写过一篇 ...

  10. PHP招聘那些事,公司真的不需要培训班出来的人么?

    就业形势严峻的情况下,每个企业对于人才的需求都不一样,并不是说公司不愿意招聘培训班出来的人,而是看你的能力是不是能胜任企业招聘人才的需求,是不是能给企业带来价值的人. 现在市面上的培训机构多如牛毛,然 ...