Selon la case qui est cochée, la zone de liste est remplie différemment.
Je me suis inspiré de ce que j'ai trouvé, mais pour l'instant, ça ne fonctionne pas.
Dans le script :
Le <dtml-var expr="Script.Python.pRequete_impression_offre"> est du code Zope/python qui renvoie :
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
63
64
65
66 var xhr = null; function getXhr() { if(window.XMLHttpRequest) // Firefox et autres xhr = new XMLHttpRequest(); else if(window.ActiveXObject) { // Internet Explorer try { xhr = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { xhr = new ActiveXObject("Microsoft.XMLHTTP"); } } else { // XMLHttpRequest non supporté par le navigateur alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); xhr = false; } } // Node cleaner function go(c) { if(!c.data.replace(/\s/g,'')) c.parentNode.removeChild(c); } function clean(d) { var bal=d.getElementsByTagName('*'); for(i=0;i<bal.length;i++) { a=bal[i].previousSibling; if(a && a.nodeType==3) go(a); b=bal[i].nextSibling; if(b && b.nodeType==3) go(b); } return d; } /** * Méthode qui sera appelée lors de la sélection d'une case à cocher */ function gophp(){ getXhr(); // On définit ce qu'on va faire quand on aura la réponse xhr.onreadystatechange = function() { // On ne fait quelque chose que si on a tout reçu et que le serveur est ok if(xhr.readyState == 4 && xhr.status == 200) { reponse = clean(xhr.responseXML.documentElement); // On se sert de innerHTML pour rajouter les options a la liste document.getElementById('idjs_select_categorie_ou_offre').innerHTML = reponse; } } xhr.open("GET",'<dtml-var expr="Script.Python.pRequete_impression_offre">',true); xhr.send(null); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 <SELECT name="categorie_ou_offre" id="idjs_categorie_ou_offre" size="5" multiple class="moyen" onFocus="idjs_input_tout_categorie.checked=false;"> <option value="35">Titi</option> <option value="36">Toto</option> <option value="37">Tata</option> <option value="38">Tutu</option> </select>
Dans le body :
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 <FORM Name="choix_impression" ACTION="Page/Index1/Impression_Ouvrir_Page" onsubmit="return Verifier_champ_Impression();" METHOD="GET" ENCTYPE="multipart/form-data"> <table border="0" width="60%"> <tr valign="middle"> <td colspan="2"> <input type="checkbox" name="liste" id="idjs_liste" onFocus="test('liste');" onclick="gophp();"><label for="idjs_liste">Liste des offres</label> </td> </tr> <tr valign="middle"> <td colspan="2"> <input type="checkbox" name="enveloppe" id="idjs_env" onFocus="test('env');"><label for="idjs_env">Enveloppes</label> </td> </tr> <tr valign="middle"> <td colspan="2"> </td> </tr> <tr align="center" valign="middle"> <td> <div style="visibility:hidden;display:inline;" id="idjs_select_categorie_ou_offre"> <label for="idjs_categorie_ou_offre" id="idjs_label_categorie_ou_offre"></label> <br><br> <SELECT name="categorie_ou_offre" id="idjs_categorie_ou_offre" size="5" multiple class="moyen" onFocus="idjs_input_tout_categorie.checked=false;"> </SELECT> </div> </td> <td> <div id="idjs_tout_categorie" style="visibility:hidden;"> <input type="checkbox" name="tout_categorie" id="idjs_input_tout_categorie" onFocus="idjs_categorie_ou_offre.selectedIndex=-1;"><label for="idjs_input_tout_categorie">Toutes les catégories</label> </div> </td> </tr> </table> <p align="center"> <BUTTON TYPE="submit" class="bouton_ok2">Imprimer</BUTTON> <BUTTON TYPE="reset" class="bouton_reset">Effacer</BUTTON> </FORM>
Partager