Hello à tous,
Après les Datagrid, je continue mon exploration des objets Dojo : je suis confronté au Pb que ma CheckBox est visible si je la déclare dans le code HTML, mais invisible si je la crée à partir d'une fonction javascript.
Je crée un tableau 1 ligne - 3 colonnes avec :
1-ère cellule : CheckBox crée comme un élément HTML ( dans ce cas quel avantage procure dojotype="dijit.form.CheckBox" par rapport à un élément <input type="checkbox" ... ? );
2-ème cellule : CheckBox crée à partir d'une fonction javascript puis ajoutée au DOM;
3-ème cellule : TextBox crée à partir d'une fonction javascript puis ajoutée au DOM;
Celà à partit du code suivant :
Si les cellules 1 et 3 sont affichées dans le navigateur, la cellule 2 n'affiche aucun contenu, bien que l'élément soit présent quand je fais une inspection avec Firebug :
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62 <html> <head> <title></title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <script type="text/javascript" src="resources/Dojo-1.3.0/dojo/dojo.js"> </script> <style type="text/css"> @import "resources/Dojo-1.3.0/dijit/themes/nihilo/nihilo.css"; @import "resources/Dojo-1.3.0/dojox/grid/resources/Grid.css"; @import "resources/Dojo-1.3.0/dojox/grid/resources/nihiloGrid.css"; .dojoxGrid table { margin: 0; } </style> <script type="text/javascript"> djConfig="parseOnLoad: true, isDebug: true"; dojo.require("dijit.form.CheckBox"); dojo.require("dijit.form.TextBox"); function casacocher() { var mycase = new dijit.form.CheckBox({name: "checkb", value: "etat", checked: false, onChange: function(x){ alert('commute avec = ' + x + 'value = ' + checkb.attr('value') ); } }, document.createElement('td')); // ajouter la case la section td "maCase": dojo.byId("maCase").appendChild(mycase.domNode); } function zonetext() { var mytext = new dijit.form.TextBox({}, document.createElement('td')); // ajouter le nouveau bouton à la section td "monTexte": dojo.byId("monTexte").appendChild(mytext.domNode); } dojo.addOnLoad(casacocher); dojo.addOnLoad(zonetext); </script> </head> <body> <table border="2"> <tr> <td> <input id="mycb" dojotype="dijit.form.CheckBox" name="gnom" checked="checked" value="on" type="checkbox" style="width: 140px; height: 40px;"/> <label for="mycb"> Gestion Nom </label> </td> <td id="maCase" dojotype="dijit.form.CheckBox" style="width: 140px; height: 40px;"> </td> <td id="monTexte" dojotype="dijit.form.TextBox"style="width: 140px; height: 40px;"> </td> </tr> </table> </body> </html>
Je remarque cependant la présence de <div> ....</div> qui est absent dans le cas de la TextBox de la cellule 3.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 <td> <input id="mycb" type="checkbox" style="width: 140px; height: 40px;" value="on" checked="checked" name="gnom" dojotype="dijit.form.CheckBox"/> <label for="mycb"> Gestion Nom </label> </td> <td id="maCase" style="width: 140px; height: 40px;" dojotype="dijit.form.CheckBox"> <div class="dijitReset dijitInline dijitCheckBox" wairole="presentation" role="presentation" widgetid="dijit_form_CheckBox_0"> <input id="dijit_form_CheckBox_0" class="dijitReset dijitCheckBoxInput" type="checkbox" dojoattachevent="onmouseover:_onMouse,onmouseout:_onMouse,onclick:_onClick" dojoattachpoint="focusNode" name="checkb" value="etat" tabindex="0" aria-pressed="false" style="-moz-user-select: none;"/> </div> </td> <td id="monTexte" style="width: 140px; height: 40px;" dojotype="dijit.form.TextBox"> <input id="dijit_form_TextBox_0" class="dijit dijitReset dijitLeft dijitTextBox" type="text" autocomplete="off" dojoattachevent="onmouseenter:_onMouse,onmouseleave:_onMouse" dojoattachpoint="textbox,focusNode" tabindex="0" widgetid="dijit_form_TextBox_0" value=""/> </td>
Par ailleurs, lorsque je fais un clic sur la 2-ème cellule, j'obtiens checkb is not defined
Une idée avant que je n'abandonne cette façon de procéder?
Partager