概述
看官方文档和引入的fstree.js,fsLayui2树形菜单监听事件貌似只提供了点击事件,未提供复选框选中监听事件。于是本身引入的还是ztree插件,于是自己在fsTree.js加了个复选框选中事件onCheck。
步骤一
自定义一个属性为setFormId,赋值给form表单某个属性,为选中的id值。
步骤二
在fsTree.js文件中为setFormId属性赋值。
步骤三
在fsTree.js文件中FsTree.prototype.showTree方法里增加onCheck事件。
源代码:
if("checkbox" == checkType || "radio" == checkType){
var check = {};
check["enable"] = true;
check["chkStyle"] = checkType;
setting["check"] = check;
}
修改后:
if("checkbox" == checkType || "radio" == checkType){
var check = {};
check["enable"] = true;
check["chkStyle"] = checkType;
setting["check"] = check;
var setFormId = _this.config.setFormId;
var isRoot = _this.config.isRoot;
var treeIdKey = _this.config.treeIdKey;
setting["callback"]["onCheck"]=function(){
var zTree = $.fn.zTree.getZTreeObj(treeId);
var nodes = zTree.getCheckedNodes();
if(nodes != null && nodes.length > isRoot) {
var idStr = "";
for(var i = isRoot; i < nodes.length; i++) {
if(i == isRoot) {
idStr += nodes[i][treeIdKey];
} else {
idStr += "," + nodes[i][treeIdKey];
}
}
$("#"+setFormId).val(idStr);
} else {
$("#"+setFormId).val("");
}
}
}
步骤四
由于编辑时候根目录为自定义的,数据库没有该节点,所以会出现以下这种情况。子节点选中,父节点没有选中。
增加判断根节点是否选中