在页面加载时bootstrap-treeview预先检查的节点

时间:2019-05-01 13:23:54

标签: javascript bootstrap-treeview

我可以在bootstrap-treeview中显示我的内容,通过使用以下肮脏的解决方案,可以修改一些内容,即,最多只能选择一个节点。

if(editId!='') {
                $($checkableTree).treeview('uncheckAll', { silent: true });
                $($checkableTree).treeview('checkNode', [ node.nodeId, { silent: true } ]);
}

问题 我想在编辑时预先检查一个节点,问题是我没有nodeId,我只有href记录信息。

请在屏幕截图下方查看。 enter image description here

我已将以下文档作为参考,但没有运气, https://www.jqueryscript.net/other/Dynamic-Tree-View-Plugin-jQuery-Bootstrap.html

如果有人知道该怎么做,请帮忙。

1 个答案:

答案 0 :(得分:1)

我能够解决我的问题,

下面是解决方案,

<script>
if(editId!='') 
{   
            selectNodeById(editId); // this function to get the node Id to make checked
            checkvals = parseInt(document.getElementById('editid_node').value); 
            $($checkableTree).treeview('checkNode', [ checkvals, { silent: true } ]);
            $('#checkable-output').prepend('<p>' +checkvals + ' was checked</p><div style=""><input type="checkbox" name="arr[]" checked id="check_'+checkvals+'" value="'+node.href+'"></div>');

}

function selectNodeById(id)
{
    var treeViewObject = $('#treeview-checkable').data('treeview'),
    allCollapsedNodes = treeViewObject.getCollapsed(),
    allExpandedNodes = treeViewObject.getExpanded(),
    allNodes = allCollapsedNodes.concat(allExpandedNodes);
    for (var i = 0; i < allNodes.length; i++) {

        console.log(allNodes);
        if (allNodes[i].href != id) continue;
        document.getElementById('editid_node').value = allNodes[i].nodeId;
    }
}
</script>
  <html>  
  <input type="hidden" name="editid_node" id="editid_node" value="">
</html>
  • selectNodeById($ editId)从href获取nodeId,在我看来,href是唯一的

  • editid_node是一个隐藏文件,如果我为其分配了nodeId

  • checkvals = parseInt(document.getElementById('editid_node')。value);用于检查所需的节点。