Bonjour,
J'ai fait un treeview avec des checbox (dynatree.js) qui se trouve dans un <form>. Pour cela, j'ai mis des input type='checkbox' aux différents nœuds pour qu'a chaque fois que je clique sur un élément la checkbox prend la même valeur et au moment de l'envoie du formulaire je récupère les bon éléments.(l'input sera en display:none quand tout fonctionnera) Jusqu'ici tout fonctionne.
Lorsque, je coche un nœud qui est un enfant d'un autre, le nœud parent "réagit" selon si tous les enfants sont coché ou non. là j'arrive à le faire fonctionner aussi sur les inputs.
Mon problème est le suivant:
Lorsque je décoche un nœud enfant, l'input du parent reste coché.
voila mon code:
je joins une capture d’écran pour que cela soit plus compréhensible:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 <script type="text/javascript"> $(function(){ $("#tree").dynatree({ //Tree parameters persist: true, checkbox: true, selectMode: 3, activeVisible: true, // Un/check real checkboxes recursively after selection onSelect: function(select, dtnode) { $("#chb-"+dtnode.data.key).attr("checked",select);//input checkbox correspondand au domaine coché/decoche $.map($("#tree").dynatree("getTree").getSelectedNodes(), function(dtnode){ $("#chb-"+dtnode.data.key).attr("checked",true); }); } }); // Update real checkboxes according to selections $.map($("#tree").dynatree("getTree").getSelectedNodes(), function(dtnode){ $("#chb-"+dtnode.data.key).attr("checked",true); }); }); </script>
Comme vous pouvez le voir le nœud CA T n'est plus coché mais le parent Cap son input l'est encore.
J'ai essayé de partir sur le même modèle que getSelectedNodes
pour le cas ou on décoche mais je n'y suis pas arrivé.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 getSelectedNodes: function(stopOnParents) { var nodeList = []; this.tnRoot.visit(function(node){ if( node.bSelected ) { nodeList.push(node); if( stopOnParents === true ){ return "skip"; // stop processing this branch } } }); return nodeList; },
merci d'avance pour votre aide.
chris
Partager