Salut,
J'aimerais avoir votre avis sur la gestion des boutons radio avec le DOM, dans une optique XHTML.
Comment connaitre la valeur active d'un groupe de bouton radio et comment la modifier via le code ?
Sachant que
1) "getElementsByName" est dépréciée,
2) que "document.MyForm.MyRadio.value" n'est (me semble-t-il) pas vraiment "DOM-Like" ( le jeu de mots à 30 centimes d'euros [Ndlr à l'attention des "vieux" : à 2 balles])
3) et que coller un ID à chaque bouton radio n'est pas la panacée car c'est plutot difficile sur une liste de boutons générée via php :
- Créer des id avec un numéro d'ordre ("MyRadio-1", "MyRadio-2" par exemple) n'aidera pas beaucoup, ni dans la recherche, ni dans l'affectation
- inclure la valeur (value) dans l'ID ("MyRadio-toto", "MyRadio-tata" par exemple) ne marchera que si la valeur ne contient pas d'espace ou de hiéroglyphes
- Ca me parait vraiment lourd de passer par des ID
Bref, j'ai écrit ces 2 fonctions qui me semblent franchement "moyennes" comme solution (même si elles fonctionnent bien) et j'aimerais savoir si vous avez une meilleure méthode (sachant que je suis loin d'être un pro du DOM)
Merci
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 // Cette fonction indique la valeur du bouton radio coché dans le groupe demandé function WhichRadio(RadioName) { // Recherche des objets de type "input" var Inputs = document.getElementsByTagName('input'); for(i = 0; i < Inputs.length; i++) { // filtre sur les radios if(Inputs[i].type == "radio") { // Filtre sur le bouton radio recherché et vérification de son état if(Inputs[i].name == RadioName && Inputs[i].checked) return Inputs[i].value; } } return "none"; } // Cette fonction coche le bouton radio ayant la valeur demandé function SetRadio(RadioName, Valeur) { // Recherche des objets de type "input" var Inputs = document.getElementsByTagName('input'); for(i = 0; i < Inputs.length; i++) { // filtre sur les radios if(Inputs[i].type == "radio") { // Filtre sur le bouton radio recherché et sa valeur if(Inputs[i].name == RadioName && Inputs[i].value == Valeur) Inputs[i].checked = "checked"; } } }
Partager