[AJAX] Case à cocher-->mise à jour select
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 :
Code:
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);
} |
Le <dtml-var expr="Script.Python.pRequete_impression_offre"> est du code Zope/python qui renvoie :
Code:
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:
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> |