zTree 的 Checkbox/Radio 是**模擬渲染的圖片/字體圖示**,非原生 ``,**文字區域 (`` 標籤) 點擊不會自動觸發勾選**,需開發者手動處理。
var setting = {
check: {
enable: true,
chkStyle: "checkbox", // 或 "radio"
radioType: "all" // radio 時:all=全樹單選, level=同層級單選
},
callback: {
onClick: function(event, treeId, treeNode) {
var zTree = $.fn.zTree.getZTreeObj(treeId);
// 切換勾選狀態:第三參數 false=不觸發 onCheck 回調, true=觸發
zTree.checkNode(treeNode, !treeNode.checked, true, true);
// 參數:node, checked, checkTypeFlag(父子關聯), callbackFlag(觸發onCheck)
}
}
};
$.fn.zTree.init($("#treeDemo"), setting, zNodes);
`chkStyle: "radio"` 時,`checkNode(node, true, ...)` 會自動取消同組 (依 `radioType`) 其他節點選中狀態,無需手動迴圈。
function onCheck(event, treeId, treeNode) {
var treeObj = $.fn.zTree.getZTreeObj(treeId);
var nodes = treeObj.getCheckedNodes(true); // true=只取勾選的
var ids = nodes.map(n => n.id).join(',');
$("#hiddenInput").val(ids); // 回填隱藏域提交
}
核心:zTree 文字區域點擊不自動勾選,必須在 onClick 回調中顯式呼叫 checkNode。