11548 sujets

JavaScript, DOM et API Web HTML5

Salut,

J'ai créé un formulaire de saisie qui garde les valeurs dans les champs après envoi. Et je me suis rendu compte, qu'avec le bouton type reset, seul les listes ne s'effaçaient pas Smiley confus

Après avoir bidouillé pendant quelques jours, je m'en suis remis à JS pour le faire. Genre appel d'une fonction sur le click du bouton. La ligne :

document.forms['modif_dem_aff'].elements['des_dem_aff'].value = '' ;


marche, mais seulement avec les input text,button... pas les select Smiley eek

document.forms['modif_dem_aff'].elements['liste_num_tiers'].value = '' ;
document.getElementById("liste_num_cont").value = '';


les lignes ci-dessus ne fonctionnent pas non-plus (ce sont des listes) Smiley ohwell

Voilà, j'aimerais savoir si les listes doivent être traitées différement Smiley smile

Merci d'avance
Modifié le 25 Jan 2005 - 14:09
He oui...

Pour les listes du type select, tu dois récupérer le tableau des items, enfant de la liste et tester le statut de l'attribut selected avec une boucle.
C'est normal et logique puisque tu manipule ces objets au travers de l'arbre du DOM

Par exemple :
for(n=0;n<=document.getElementById('taliste').childNodes.length;n++){
 target=document.getElementById('taliste').childNodes[n];
 if(toLowerCase(target.tagName=="option") && toLowerCase(target.getAttribute("selected"))=="selected")target.removeAttribute("selected");
}


Ou quelque chose de similaire selon tes habitudes de codage...
Salut et merci Smiley biggrin

Donc je comprend très bien le début de ton petit script, malheureusement quelques petites choses m'échapent. Peux tu m'expliquer le pourquoi de ton test dans la boucle ?

En fait, je n'arrive pas à voir ce que représente "option" et "selected" Smiley confused Ai-je vraiment besoin du test pour vider la liste ?

Je suis très loin d'être bon en JS, mais je m'y met au mieux et vous êtes une montagne de science pour moi. Voilà, donc merci encore Smiley smile

Smiley cligne
Heuu...
Si nous parlons de la même chose une balise select (liste de choix d'options) est de la forme :
<select>
<option>..</option>
<option>..</option>
<option>..</option>
</select>

Où chaque element option est un item de liste de choix.
C'est l'attribut selected qui permets de savoir qu'elle est l'option actuellement selectionné.
Sinon le scenario de la routine :
On parcours tous les élements enfants de la balise select.
Si c'est une balise option, donc un item de la liste de choix.
Si il existe un attribut selected, donc si l'item est selectionné
On réinitialise cet attribut.

Mais peut-être que tu faisais référence à un autre type de liste ???
Salut,

C'est bien à se type de liste que je fais réference. Par contre je n'arrive vraiment pas à les effacer Smiley confus J'ai repris ton script de cette manière

nb = document.getElementById('liste_num_tiers').childNodes.length ;
alert ("Nombre " + nb) ;
for(n=0; n <= nb; n++){
		
		alert ("Element " + n) ;
		target = document.getElementById('liste_num_tiers').childNodes[n] ;
		alert ("Nom " + target.tagName) ;
		alert ("Nom " + target.getAttribute("selected")) ;
		
		if((target.tagName == "OPTION") && (target.getAttribute("selected") == null)) {
		
			alert("oui if") ;
			target.removeAttribute("selected") ;
		}
}


J'arrive bien à entrer dans le IF mais l'action "removeAttribute" ne fonctionne pas. De plus, j'ai du enlever les "toLowerCase()" qui ne fonctionnaient pas non plus Smiley eek

Que faire... Smiley bawling

Merci
Absolument Bobe, mais selectedIndex ne renvoie que le statut de la première valeur selectionnée ce qui ne conviens pas en cas de liste à choix multiple d'ou mon "reflexe" de traiter ça dans une boucle.

@jpwalker : si ta liste est de type choix unique alors, comme d'habitude bobe à la solution simple et efficace Smiley smile

Si ta liste est susceptible de contenir des choix multiple, remplace removeAttribute par setAttribute("selected","") il n'y à aucune raison que ça ne fonctionne pas.
Modifié le 25 Jan 2005 - 00:09
OK les gars, merci bien pour toutes ces précisions Smiley biggrin

Dans mon cas, c'est un choix multiple. J'ai donc remplacé removeAttribute par setAttribute("selected","") et tout fonctionne Smiley biggrin

Je vous remercie vraiment beaucoup Smiley cligne
Modifié le 25 Jan 2005 - 14:10