Я использую плагин jsTree jQuery с темой флажка. Кто-нибудь знает, как получить выбранные значения с помощью сообщения формы?
Спасибо!
Я использую плагин jsTree jQuery с темой флажка. Кто-нибудь знает, как получить выбранные значения с помощью сообщения формы?
Спасибо!
Вы получили свой ответ? Если нет, вот тот, который появляется в группах jstree google.
function submitMe(){ var checked_ids = []; $("#server_tree").jstree("get_checked",null,true).each (function () { checked_ids.push(this.id); }); doStuff(checked_ids);
В последней версии (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);
});
Каждый, кто работал с 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="" />
Однако в моем случае предложенное решение из групп 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);
}
});
С jQuery
вы можете просто сделать:
$('.jstree-checked,.jstree-undetermined').each(function(){
var rawCheckedID = $(this).find('a').attr('id');
});
Это позволит получить неопределенное и проверенное одновременно. вышеприведенное решение soumya может быть более эффективным.
Вы можете использовать это:
var result = $('#your_tree').jstree('get_selected');
https://stackoverflow.com/a/22499278/1883345
я сделал это, чтобы получить идентификатор, родительский идентификатор и текст выбранного флажка. надеюсь, это поможет кому-то :)
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);
}
Это я сделал:
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]));
})
<input type="hidden" class="jsfields" value=""/>
Измените значение $('#myTree')
на соответствующее дерево, это лучше всего работает для меня при вызове ajax. может потребоваться небольшая модификация для заполнения поля ввода простой формы.