2010-10-21 33 views
1

J'ai un jsTree avec des cases à cocher qui s'affiche très bien. Je peux ouvrir et fermer les nœuds, cocher et décocher les cases à cocher, etc.jsTree checkbox plugin error

Le problème survient lorsque j'essaie d'obtenir tous les nœuds qui ont été vérifiés. Ci-dessous, je liste toutes les façons dont j'ai essayé, avec l'erreur messages que je reçois quand j'essaie chacun.

$.tree.plugin.checkbox.get_checked($.tree.reference("#smuDomains")); 
$.tree is undefined 

$.jstree.plugin.checkbox.get_checked($.jstree.reference("#smuDomains")); 
$.jstree.plugin.checkbox is undefined 

$.tree.plugins.checkbox.get_checked($.tree.reference("#smuDomains")); 
$.tree is undefined 

$.jstree.plugins.checkbox.get_checked($.jstree.reference("#smuDomains")); 
$.jstree.plugins is undefined 

Le second (.jstree.plugin.checkbox $) semble obtenir le le plus proche de travailler, mais il ne semble pas que la « case » référence . Devrait-il être check_box ou quelque chose de différent?

Voici le code que j'utilise pour initialiser l'arbre:

$.jstree._themes = "../script/css/jstree/themes/"; 
$("#smuDomains").jstree({ 
    core : {}, 
    themes : { 
     theme : "classic", 
     dots : true, 
     icons : true, 
     url : false 
    }, 
    json_data : { 
     ajax : { 
      url : "[the url]", 
      datatype : "json", 
      data : function(n) { 
       return { id : n.attr ? n.attr("id") : 0 }; 
      }, 
      plugins : [ "themes", "json_data", "ui", "checkbox"] 
     }); 
    }); 
+0

Bien sûr toutes les parenthèses sont fermées? – Harmen

+0

Oui, toutes les parenthèses sont là, je n'ai tout simplement pas fait un bon travail de copie et de collage comme j'aurais dû le faire. L'arbre fonctionne parfaitement. Ce n'est que lorsque j'essaie de passer un appel à get_checked que je rencontre les erreurs non définies. – irrational

Répondre

0

l'un des problèmes avec get_checked est qu'il arrêtera au niveau des nœuds parents qui sont cochés.

Nous avons fini par aller avec quelque chose comme ceci:

$ ('# idOfDivContainingTree .jstree vérifié)

Il y a un risque de ce ne fonctionne pas avec les versions futures de jsTree car il dépend la mise en œuvre

+0

Je ne l'ai pas testé moi-même, mais si vous regardez les docs jsTree pour le plugin Checkbox, vous verrez que get_checked a un paramètre booléen "get_all" qui est supposé renvoyer tous les nœuds vérifiés. –

3

J'utilise ce code pour obtenir des cases à cocher juste avant soumettre le formulaire.

jQuery('#myForm').submit(function() { 
    jQuery('#mytree .jstree-checked').each(function() { 
     var node = jQuery(this); 
     var id = node.attr('id'); 
     var node_parent = node.parents('li:eq(0)'); 
     var pid = node_parent.attr('id'); 

     jQuery("<input>").attr("type", "hidden").attr("name", "treenode").val(id).appendTo("#mytree"); 
    }); 
}); 
1

$ ('# arbre') jstree ('get_checked')

0

Vous pouvez:.

checked_nodes = $ ("#") smuDomains jstree ("get_checked", null, true);

.each $ (checked_nodes, fonction (k, n) {

node = $(n); 
alert("name: "+node.attr("name")); //show each one of the nodes names 

});

si vous voulez seulement les noeuds sélectionnés, vous pouvez avoir.

selected_nodes = $ ("#") smuDomains jstree ("get_selected", null, true);

espérons que cela aide