Estoy usando el plugin jsTree jQuery con el tema de casilla de verificación. ¿Alguien sabe cómo obtener los valores seleccionados con una publicación de formulario?obtener valores comprobados para jsTree - enviar con el formulario
¡Gracias!
Estoy usando el plugin jsTree jQuery con el tema de casilla de verificación. ¿Alguien sabe cómo obtener los valores seleccionados con una publicación de formulario?obtener valores comprobados para jsTree - enviar con el formulario
¡Gracias!
¿Tiene usted respuesta? Si no, aquí es uno que aparece en el 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);
La solución sugerida de Grupos de Google sin embargo no funcionó para los nodos parcialmente controladas, en mi caso. Tuve que dejar get_checked out y hacer lo siguiente para obtener nodos totalmente seleccionados y parcialmente seleccionados.
$(".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);
}
});
Con jQuery
simplemente puede hacer:
$('.jstree-checked,.jstree-undetermined').each(function(){
var rawCheckedID = $(this).find('a').attr('id');
});
Esto hará que lo indeterminado y comprobados al mismo tiempo. La solución de Soumya anterior puede ser más eficiente.
Todos los que trabajaron con Jstree's pueden enfrentarse a esta pregunta: ¿Cómo obtener los Ids comprobados de Jstree en el envío de formularios? aquí está la solución:
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(",");
}
Ahora, lo ponemos en un campo oculto:
<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)
});
En la última versión (3.0), la API se ha cambiado.
Si necesita simplemente array de identificadores seleccionados (como en los ejemplos en este nodo), ahora es muy fácil:
var selectedElmsIds = $('#tree').jstree("get_selected");
Si necesita iterar sobre los elementos seleccionados, sólo tiene que pasar parámetro "verdadero" adicional.
var selectedElmsIds = [];
var selectedElms = $('#tree').jstree("get_selected", true);
$.each(selectedElms, function() {
selectedElmsIds.push(this.id);
});
Para mí, en 3.3.4 necesitaba usar get_checked, not 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);
esto lo hice:
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
}
Esto le dará una matriz de todos nodo seleccionado y sus nodos sub y hojas; así como hojas sueltas seleccionadas bajo otros nodos.
$(document).ready(function(){
var jsfields = $('#myTree').jstree('get_selected');
$('.jsfields').val(JSON.stringify([jsfields]));
})
<input type="hidden" class="jsfields" value=""/>
Cambiar el valor de $('#myTree')
a usted respectivo árbol, este es el mejor trabajo para mí en llamada AJAX. Puede ser necesaria una ligera modificación para rellenar el campo de entrada de forma simple.
Puede utilizar esta:
var result = $('#your_tree').jstree('get_selected');
alta, por lo que se refiere a lo this.id exactely? y ¿qué pasa si quiero obtener el texto de la etiqueta a? Gracias. –
Lo entiendo :) Se refiere a la identificación de la etiqueta li. –
+1 para entender :) –