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;
}