получить проверенные значения для jsTree - отправить с сообщением формы

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

Спасибо!


person dzm    schedule 18.05.2011    source источник


Ответы (9)


Вы получили свой ответ? Если нет, вот тот, который появляется в группах jstree google.

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

person soumya    schedule 10.06.2011

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

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

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

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

var selectedElmsIds = [];
var selectedElms = $('#tree').jstree("get_selected", true);
$.each(selectedElms, function() {
    selectedElmsIds.push(this.id);
});
person Lukas Jelinek    schedule 18.03.2014
comment
Мне в 3.3.4 нужно было использовать get_checked, а не get_selected. - person chip; 20.11.2017
comment
Используя версию jsTree 3.3.8, это get_selected. Полный и работающий исходный код вы можете посмотреть на все .com/Example-of-jsTree-to-get-all-checked-nodes - person Asif Nowaj; 02.11.2019

Каждый, кто работал с 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="" />
person Jamshid Hashimi    schedule 17.07.2012
comment
привет, так this.id относится к чему именно? а что, если я хочу получить текст тега? Спасибо. - person MarGa; 02.04.2013
comment
Я понял :) Это относится к идентификатору тега li. - person MarGa; 02.04.2013
comment
Получает ли это также элементы в неопределенном состоянии? - person Vincent; 22.07.2016

Однако в моем случае предложенное решение из групп google не сработало для частично проверенных узлов. Мне пришлось оставить 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); } });
person soumya    schedule 10.06.2011

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

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

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

person Fostah    schedule 02.12.2011

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

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

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

person Majid Basirati    schedule 06.10.2016

я сделал это, чтобы получить идентификатор, родительский идентификатор и текст выбранного флажка. надеюсь, это поможет кому-то :)

function myFunction(elmnt,clr){
         elmnt.style.color =clr;
         var selectedElmsinfo = [];

         var selectedElms = $('#SimpleJSTree').jstree("get_selected", true);
            $.each(selectedElms, function() {
                selectedElmsinfo.push(this.id,this.text,this.parent);

            });
             alert(selectedElmsinfo);
        }
person Aamir Awan.    schedule 02.09.2019

Это я сделал:

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 
}

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

person t_plusplus    schedule 08.07.2016

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

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

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

person Syed Waqas Bukhary    schedule 18.09.2016