欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

easyui中combotree根据关键字进行本地过滤

程序员文章站 2022-03-03 10:12:47
...

注:combotree没有获取所有数据的方法,这里所使用的都是通过方法先取的缓存中的数据dataArr,如果要动态获取的话需要调用tree的相关方法获取。


easyui中combotree根据关键字进行本地过滤,主要原理是调用tree的doFilter方法进行过滤。示例:

$('#AORGID').combotree({
    data: dataArray, //所有数据
    editable: true,
    //直接过滤,数据太多时不行,太卡了,放弃
     filter: function(q, row){
         return row.text.indexOf(q) >= 0;
    },
    //本地过滤,根据输入关键字的值调用tree的过滤方法
    keyHandler: {
        query: function(q, e) {
            $('#AORGID').combotree('tree').tree('doFilter', q)
        }
    }
})


绑定combotree输入框焦点事件,如果输入的关键字没有对应的ID值那么输入框中的关键字也会清除掉。示例:

//combotree失去焦点时如果文本值没有对应ID就清除文本
$('#AORGID').next().children(':text').on('blur', function() {
    var val = $(this).val();
    var orgId = getTreeId(dataArr, val);
    $('#AORGID').combotree('setValue', orgId);
});
//根据text文字查找树形菜单中的ID,要求递归
function getTreeId(data, val) {
    var tt = '';
    function GetSubId(jsonData, val) {
        for(var i = 0; i < jsonData.length; i++) {
            if(jsonData[i].text == val)
                tt = jsonData[i].id;
            else {
                if(jsonData[i].hasOwnProperty("children")) {
                    GetSubId(jsonData[i].children, val);
                }
            }
        }
    }
    GetSubId(data, val);
    return tt;
}