получить проверенные значения для jsTree - отправить с постом формы - PullRequest
19 голосов
/ 18 мая 2011

Я использую плагин jsTree jQuery с темой флажка. Кто-нибудь знает, как получить выбранные значения с помощью формы сообщения?

Спасибо!

Ответы [ 10 ]

25 голосов
/ 18 марта 2014

В последней версии (3.0) API был изменен.

Если вам нужен только массив выбранных идентификаторов (как в примерах в этом узле), теперь это очень просто:

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

Если вам нужно перебрать выбранные элементы, вам просто нужно передать дополнительный «истинный» параметр.

var selectedElmsIds = [];
var selectedElms = $('#tree').jstree("get_selected", true);
$.each(selectedElms, function() {
    selectedElmsIds.push(this.id);
});
19 голосов
/ 11 июня 2011

Ты получил ответ?Если нет, то вот что появляется в jstree google groups

    function submitMe(){ 
        var checked_ids = []; 
        $("#server_tree").jstree("get_checked",null,true).each 
            (function () { 
                checked_ids.push(this.id); 
            }); 
           doStuff(checked_ids); 

14 голосов
/ 17 июля 2012

Каждый, кто работал с Jstree, может столкнуться с таким вопросом: как получить проверенные идентификаторы Jstree в форме? вот решение:

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(",");
}

Теперь мы установили его в скрытом поле:

<input type="hidden" name="jsfields" id="jsfields" value="" />
3 голосов
/ 03 декабря 2011

С jQuery вы можете просто сделать:

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

Это получит неопределенное и проверено одновременно. Решение Soumya выше может быть более эффективным.

3 голосов
/ 11 июня 2011

Предлагаемое решение от групп Google, однако, не работает для частично проверенных узлов, в моем случае.Мне пришлось оставить get_checked out и сделать следующее, чтобы получить полностью выбранные и частично выбранные узлы.

2 голосов
/ 06 октября 2016

Вы можете использовать это:

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

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

0 голосов
/ 18 сентября 2016
$(document).ready(function(){
var jsfields = $('#myTree').jstree('get_selected');
$('.jsfields').val(JSON.stringify([jsfields]));
})

<input type="hidden" class="jsfields" value=""/>

Измените значение $('#myTree') на соответствующее дерево, это лучше всего подойдет для меня при вызове ajax. небольшая модификация может потребоваться для заполнения поля ввода простой формы.

0 голосов
/ 08 июля 2016

Это я сделал:

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 
}

Это даст вам массив всех выбранных узлов, их подузлов и листьев; а также отдельные листья, выбранные под другими узлами.

0 голосов
/ 16 мая 2016

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);
0 голосов
/ 23 октября 2013
//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)       
}); 
...