老生常谈combobox和combotree模糊查询
First
/**
*combobox和combotree模糊查询
*combotree结果显示两级父节点(手动设置数量)
*键盘上下键选择叶子节点
*键盘回车键设置文本的值
*/
(function(){
//combobox可编辑,自定义模糊查询
$.fn.combobox.defaults.editable=true;
$.fn.combobox.defaults.filter=function(q,row){
varopts=$(this).combobox('options');
returnrow[opts.textField].indexOf(q)>=0;
};
//combotree可编辑,自定义模糊查询
$.fn.combotree.defaults.editable=true;
//选中行索引
varleafBlockIndex=0;
//当前选中行索引
varnowLeafBlockIndex=-1;
//combotree组件
varcomboTree=null;
//叶子节点DOMArray
varleafBlocks=null;;
//将所有的结果叶子节点放入DOMArray中
functiongetDOMArray(data){
comboTree=$(data).combotree('tree');
leafBlocks=newArray();
varleafs=comboTree.tree('getChildren');
for(vari=0;i=leafBlocks.length){
leafBlockIndex=0;
}
comboTree.tree('select',leafBlocks[leafBlockIndex]);
//easyui1.3.4版开始可用
//comboTree.tree('scrollTo',leafBlocks[leafBlockIndex]);
nowLeafBlockIndex=leafBlockIndex;
},
left:function(e){
console.log('left');
//varval=$(this).combo('getText');
//$(this).combo('setText',val+'');
},
right:function(e){
console.log('right');
//varval=$(this).combo('getText');
//console.log(val);
//$(this).combo('setText',val+'');
},
enter:function(e){
varleaf=$(leafBlocks[nowLeafBlockIndex]);
varvalue=leaf.children('span').last().text();
$(this).combo('setText',value);
$(this).combo('hidePanel')
},
query:function(q){
vart=$(this).combotree('tree');
varnodes=t.tree('getChildren');
for(vari=0;i=0){
$(node.target).show();
varparent=t.tree('getParent',node.target);
if(parent){
$(parent.target).show();
if(parent){
parent=t.tree('getParent',parent.target);
$(parent.target).show();
}
}
}else{
$(node.target).hide();
}
}
varopts=$(this).combotree('options');
if(!opts.hasSetEvents){
opts.hasSetEvents=true;
varonShowPanel=opts.onShowPanel;
opts.onShowPanel=function(){
varnodes=t.tree('getChildren');
for(vari=0;i
Second
(function($){
//combotree可编辑,自定义模糊查询
$.fn.combotree.defaults.editable=true;
$.extend($.fn.combotree.defaults.keyHandler,{
query:function(q){
vart=$(this).combotree('tree');
t.tree("search",q);
}
});
$.extend($.fn.tree.methods,{/**
*扩展easyuitree的搜索方法
*@paramtreeeasyuitree的根DOM节点(UL节点)的jQuery对象*@paramsearchText检索的文本
*@paramthis-contexteasyuitree的tree对象*/
search:function(jqTree,searchText){
//easyuitree的tree对象。可以通过tree.methodName(jqTree)方式调用easyuitree的方法
vartree=this;
//获取所有的树节点
varnodeList=getAllNodes(jqTree,tree);
//如果没有搜索条件,则展示所有树节点
searchText=$.trim(searchText);
if(searchText==""){
for(vari=0;i0){
varnode=null;
for(vari=0;i0){
for(vari=0;i(containerH-30)){
varscrollHeight=container.scrollTop()+nodeOffsetHeight-containerH+30;
container.scrollTop(scrollHeight);
}
}
}
});
/**
*展示搜索匹配的节点*/
functionshowMatchedNode(jqTree,tree,node){
//展示所有父节点
$(node.target).show();
$(".tree-title",node.target).addClass("tree-node-targeted");
varpNode=node;
while((pNode=tree.getParent(jqTree,pNode.target))){
$(pNode.target).show();
}
//展开到该节点
tree.expandTo(jqTree,node.target);
//如果是非叶子节点,需折叠该节点的所有子节点
if(!tree.isLeaf(jqTree,node.target)){
tree.collapse(jqTree,node.target);
}
}
/**
*判断searchText是否与targetText匹配
*@paramsearchText检索的文本*@paramtargetText目标文本
*@returntrue-检索的文本与目标文本匹配;否则为false.
*/
functionisMatch(searchText,targetText){
return$.trim(targetText)!=""&&targetText.indexOf(searchText)!=-1;
}
/**
*获取easyuitree的所有node节点*/
functiongetAllNodes(jqTree,tree){
varallNodeList=jqTree.data("allNodeList");
if(!allNodeList){
varroots=tree.getRoots(jqTree);
allNodeList=getChildNodeList(jqTree,tree,roots);
jqTree.data("allNodeList",allNodeList);
}
returnallNodeList;
}
/**
*定义获取easyuitree的子节点的递归算法*/
functiongetChildNodeList(jqTree,tree,nodes){
varchildNodeList=[];
if(nodes&&nodes.length>0){
varnode=null;
for(vari=0;i
以上这篇老生常谈combobox和combotree模糊查询就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。