Korzystam z wtyczki jsTree jQuery z motywem wyboru. Czy ktoś wie, jak uzyskać wybrane wartości za pomocą postu formularza?uzyskaj sprawdzone wartości dla jsTree - prześlij z postem formularza
Dziękujemy!
Korzystam z wtyczki jsTree jQuery z motywem wyboru. Czy ktoś wie, jak uzyskać wybrane wartości za pomocą postu formularza?uzyskaj sprawdzone wartości dla jsTree - prześlij z postem formularza
Dziękujemy!
Masz już odpowiedź? Jeśli nie, tutaj jest jeden, który pojawia się w 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);
zaproponowane rozwiązanie z grupy google jednak nie działa na częściowo kontrolowanych węzłów, w moim przypadku. Musiałem opuścić get_checked i wykonać następujące czynności, aby uzyskać w pełni wybrane i częściowo wybrane węzły.
$(".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);
}
});
Z jQuery
można po prostu zrobić:
$('.jstree-checked,.jstree-undetermined').each(function(){
var rawCheckedID = $(this).find('a').attr('id');
});
ten dostanie nieokreślony i sprawdzone w tym samym czasie. Rozwiązanie soumya powyżej może być bardziej wydajne.
Każdy, kto pracował z Jstree's, może napotkać na to pytanie: Jak uzyskać sprawdzone identyfikatory Jstree w formularzu przesłania? oto rozwiązanie:
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(",");
}
Teraz możemy ustawić go w ukrytym polu:
<input type="hidden" name="jsfields" id="jsfields" value="" />
//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)
});
W ostatniej wersji (3.0), API zostało zmienione.
Jeśli potrzebujesz tylko tablicę wybranych identyfikatorów (jak w przykładach w tym węźle), jest teraz bardzo proste:
var selectedElmsIds = $('#tree').jstree("get_selected");
Jeśli trzeba iteracyjne nad wybranymi elementami, wystarczy przejść dodatkowy "prawdziwy" parametr.
var selectedElmsIds = [];
var selectedElms = $('#tree').jstree("get_selected", true);
$.each(selectedElms, function() {
selectedElmsIds.push(this.id);
});
Dla mnie, na 3.3.4 musiałem użyć get_checked, a nie get_selected. – chip
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);
to zrobiłem:
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
}
To daje tablicę wszystkich wybranego węzła i ich węzłów podrzędnych i liście; jak również pojedyncze liście wybrane w innych węzłach.
$(document).ready(function(){
var jsfields = $('#myTree').jstree('get_selected');
$('.jsfields').val(JSON.stringify([jsfields]));
})
<input type="hidden" class="jsfields" value=""/>
Zmień wartość $('#myTree')
wam odpowiednie drzewo, to najlepiej działa na mnie w ajax rozmowy. może być potrzebna niewielka modyfikacja, aby wypełnić pole wejściowe prostej postaci.
Można to wykorzystać:
var result = $('#your_tree').jstree('get_selected');
hi, tak this.id odnosi się do co exactely? i co jeśli chcę uzyskać tekst tagu? Dzięki. –
Rozumiem :) Odnosi się do identyfikatora znacznika li. –
+1 do zrozumienia :) –