获取jsTree的选中值 – 使用表单发布

我正在使用带有复选框主题的jsTree jQuery插件。 有谁知道如何使用表格post获取所选值?

谢谢!

你有答案吗? 如果没有,这里是一个出现在jstree谷歌组

     function submitMe(){ 
         var checked_ids = []; 
         $( “#server_tree”)。jstree( “get_checked”,空,真)。每个 
             (function(){ 
                 checked_ids.push(this.id); 
             }); 
            doStuff(checked_ids); 

在上一个版本(3.0)中,API已更改。

如果您只需要选定ID的数组(如此节点中的示例),现在非常简单:

var selectedElmsIds = $('#tree').jstree("get_selected"); 

如果需要遍历所选元素,则只需传递其他“true”参数。

 var selectedElmsIds = []; var selectedElms = $('#tree').jstree("get_selected", true); $.each(selectedElms, function() { selectedElmsIds.push(this.id); }); 

与Jstree合作的每个人都可能会遇到这样的问题:如何在表单提交中检查Jstree的ID? 这是解决方案:

 function submitMe() { var checked_ids = []; $('#your-tree-id').jstree("get_checked",null,true).each(function(){ checked_ids.push(this.id); }); //setting to hidden field document.getElementById('jsfields').value = checked_ids.join(","); } 

现在,我们将它设置在一个隐藏的字段中:

  

根据我的情况,谷歌小组建议的解决方案不适用于部分检查的节点。 我不得不离开get_checked并执行以下操作以获得完全选择和部分选择的节点。


$(".sector-tree").find(".jstree-undetermined").each(function(i,element){ checked_ids.push($(element).attr("id")); if ($(this).find(".jstree-undetermined").length == 0) { $(this).find(".jstree-checked").each(function(i, element){ checked_ids.push({$(element).attr("id")); }); } }); // collect the rest of the checked nodes that exist under checked parents $(".sector-tree").find(".jstree-checked").each(function(i, element){ //also includes the ones below 'undetermined' parent var selectedElement = $(element).attr("id"); if ( hasItem(selectedElement, checked_ids ) < 0 ) { checked_ids.push(selectedElement); } });

使用jQuery您可以简单地执行:

 $('.jstree-checked,.jstree-undetermined').each(function(){ var rawCheckedID = $(this).find('a').attr('id'); }); 

这将得到未确定和同时检查。 上面的soumya解决方案可能更有效率。

 //click button show nodes checked $(document).on('click','#showme',function() { var checked_ids = []; var checked_ids_meta = []; $('#demo_0').jstree("get_checked",null,true).each(function(i, e){ checked_ids.push($(this).data("param")); // json metadata checked_ids_meta.push($(this).attr("href")); // json attr }); console.log(checked_ids) console.log(checked_ids_meta) }); 
 var selectedElmsIds = []; $("#jstree2").find("li").each(function(i, element) { //also includes the ones below 'undetermined' parent if ($(this).attr("aria-selected") == "true") { selectedElmsIds.push($(this).attr('id')); } }); console.log(selectedElmsIds); 

我这样做了:

 function getSelectedItems() { var checked_ids = []; checkedNodes = $("#MyTree").jstree("get_checked", null, true); for(var i = 0; i < checkedNodes.length; i++) { var id = $(checkedNodes[i].outerHTML)[0].id; checked_ids.push(id); } // Do whatever you want with the checked_ids } 

这将为您提供所有选定节点及其子节点和叶子的数组; 以及在其他节点下选择的单个叶子。

 $(document).ready(function(){ var jsfields = $('#myTree').jstree('get_selected'); $('.jsfields').val(JSON.stringify([jsfields])); })  

$('#myTree')的值更改为相应的树,这最适合我在ajax调用中工作。 可能需要稍微修改来填充简单forms的输入字段。

你可以用这个:

 var result = $('#your_tree').jstree('get_selected'); 

https://stackoverflow.com/a/22499278/1883345