网上多数写的是ztree shift 多选的功能实现, 但是要配合用户习惯来说的话,比较多是用于 ctrl ,因此这个也是根据shift 来写的
callback : { //回调函数
onCheck: zTreeOnCheck
}
//处理shift键多节点勾选
function zTreeOnCheck(event, treeId, treeNode) {
var preClickedNode = window.preClickedNode;
window.preClickedNode=treeNode;
event = window.event||event;//兼容IE
if(event.ctrlKey){
if((!event.ctrlKey && !event.srcEvent.ctrlKey)||!preClickedNode){//event.srcEvent.shiftKey解决firefox兼容性问题
console.log("event ctrlKey error");
return;// shift键
}
if(preClickedNode.getParentNode()!=treeNode.getParentNode()){ //是否同级
preClickedNode=null;
return;
}
var obj = jQuery.fn.zTree.getZTreeObj(treeId);
// obj.selectNode(preClickedNode,true); //选择
var firstNode =obj.getNodeIndex(preClickedNode);
var lastNode =obj.getNodeIndex(treeNode);
var count = lastNode - firstNode;
var nodeNew = preClickedNode;
if (count > 0) {
for (var i = 1; i < count; i++){
nodeNew = nodeNew.getNextNode();
if(!nodeNew)break;//用于排除隐患
// obj.selectNode(nodeNew, true); //选择
obj.checkNode(nodeNew, true, true);//勾选
}
}else {
for (var j = 1; j < (-count); j++) {
nodeNew = nodeNew.getPreNode();
if(!nodeNew)break;//用于排除隐患
// obj.selectNode(nodeNew, true); //选择
obj.checkNode(nodeNew, true, true);//勾选
}
}
}
}