如图,点击父页面的所属栏目,弹出子页面的ztree,第一次在复选框中勾选相应栏目后,第二次在父页面的栏目select框中再次点击时要把上次选的栏目默认勾选中,每次选中点确定后覆盖上一次的内容。
功能已经实现,但是不知道哪里写得不够好,
导致打开浏览器测试非常卡(ie),每次选多个栏目后下一次再点开就会卡死
子页面js代码:
$(function(){
var setting = {
check: {
enable: true,
isParent:true,
chkboxType : {"Y":"s","N":"s"}
},
view: {
dblClickExpand: false
},
data: {
simpleData: {
enable: true
}
},
callback: {
beforeClick: beforeClick,
onClick: onClick
}
};
$.fn.zTree.init($("#organName_treeDemo"), setting, ${nodeListJSON});
//确定时的点击事件,把子页面选中的id,name传到父页面
$("#btn").click(function() {
var goodsTypes = new Array();
var treeObj = $.fn.zTree.getZTreeObj("organName_treeDemo");
var checkedNodes = treeObj.getCheckedNodes();
for (var i = 0; i < checkedNodes.length; i++) {
var goodsType = new Object();
goodsType.code = checkedNodes[i].id;
//goodsType.name = checkedNodes[i].name;
var path = getFilePath(checkedNodes[i]);
goodsType.name = path;
goodsTypes[i] = goodsType;
}
window.parent.callback(goodsTypes);
// 关闭当前iframe
closeDialogInIframe();
});
//初始化时添加上次勾选的选项到树中
var treeObj = $.fn.zTree.getZTreeObj("organName_treeDemo");
window.parent.$('#cmsInfoNodeStr option').each(function(){
treeObj.checkNode(treeObj.getNodeByParam("id",$(this).val()),true,true);
});
});
function beforeClick(treeId, treeNode) {
return true;
}
function onClick(e, treeId, treeNode) {
var treeObj = treeId.split("_")[0];
var zTree = $.fn.zTree.getZTreeObj(treeId),
nodes = zTree.getSelectedNodes(),
v = "";
t = "";
nodes.sort(function compare(a,b){return a.id-b.id;});
for (var i=0, l=nodes.length; i<l; i++) {
v += "," + nodes[i].id;
t += "," + nodes[i].name;
}
if (v.length > 0 ) v = v.substring(1);
if (t.length > 0 ) t = t.substring(1);
var cityObj = $("#"+treeObj);
cityObj.attr("value", t);
$("#"+treeObj+"_Id").val(v);
onCmsNodeClick(v);
}
function getChildx(node){
return node.children;
}
父页面js:
//子页面到父页面的回调函数
function callback(goodsTypes){
$('#condition_infoItem').empty();
var vHtml = $("#condition_infoItem").html();
var infoItemStr = "" + $("#condition_infoItemStr").val();
// 所有选中的栏目对象
if (goodsTypes != null) {
for (i = 0; i < goodsTypes.length; i++) {
var code = goodsTypes[i].code;
var name = goodsTypes[i].name;
var option = "<option value='" + code + "'>" + name + "</option>";
vHtml += option;
}
}
$("#condition_infoItem").html(vHtml);
$("#condition_infoItemStr").val(infoItemStr);
}
function showInfoItem(){
var url="incNodeTree.do";
openDialogInIframe(url, '选择栏目', $(this).height()-100, 300, 1, "<%=ApplicationContextUtil.getThemePath(request)%>/images/loading.gif");
}