zoukankan      html  css  js  c++  java
  • zTree多条件模糊查询

      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);
    }
    }
    }
    }
  • 相关阅读:
    [转]对Lucene PhraseQuery的slop的理解
    Best jQuery Plugins of 2010
    15 jQuery Plugins To Create A User Friendly Tooltip
    Lucene:基于Java的全文检索引擎简介
    9 Powerful jQuery File Upload Plugins
    Coding Best Practices Using DateTime in the .NET Framework
    Best Image Croppers ready to use for web developers
    28 jQuery Zoom Plugins Creating Stunning Image Effect
    VS2005 + VSS2005 实现团队开发、源代码管理、版本控制(转)
    禁止状态栏显示超链
  • 原文地址:https://www.cnblogs.com/yangqianlong/p/8136252.html
Copyright © 2011-2022 走看看