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

注: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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_28722935

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值