382 votes

Comment obtenir la valeur du bouton radio sélectionné ?

Je veux obtenir la valeur sélectionnée dans un groupe de boutons radio.

Voici mon HTML :

<div id="rates">
  <input type="radio" id="r1" name="rate" value="Fixed Rate"> Fixed Rate
  <input type="radio" id="r2" name="rate" value="Variable Rate"> Variable Rate
  <input type="radio" id="r3" name="rate" value="Multi Rate" checked="checked"> Multi Rate  
</div>

Voici mes js :

var rates = document.getElementById('rates').value;
var rate_value;
if(rates =='Fixed Rate'){
    rate_value = document.getElementById('r1').value;

}else if(rates =='Variable Rate'){
    rate_value = document.getElementById('r2').value;

}else if(rates =='Multi Rate'){
    rate_value = document.getElementById('r3').value;
}  

document.getElementById('results').innerHTML = rate_value;

Je n'arrête pas d'avoir des indéfinis.

59 votes

Vous n'utilisez pas jQuery ici, mais si vous le souhaitez, vous pouvez utiliser ceci : $("input[type='radio'][name='rate']:checked").val();

0 votes

Pourquoi ne pouvez-vous pas inspecter cet objet ? De toute façon, vous devez utiliser .checked

0 votes

629voto

Parthik Gosar Points 1779

Cela fonctionne dans IE9 et plus et dans tous les autres navigateurs.

document.querySelector('input[name="rate"]:checked').value;

17 votes

Bien sûr, il faudrait vérifier si querySelector renvoie null. C'est le cas si aucun bouton radio n'est coché.

20 votes

@KamranAhmed : Votre solution jQuery a un coût beaucoup plus élevé.

5 votes

ParthikGosar : IE8 ne supporte pas le :checked sélecteur.

289voto

Joe F Points 1145
var rates = document.getElementById('rates').value;

L'élément de taux est un div Il n'aura donc pas de valeur. C'est probablement là que le undefined vient de.

Le site checked vous indiquera si l'élément est sélectionné :

if (document.getElementById('r1').checked) {
  rate_value = document.getElementById('r1').value;
}

Ou

$("input[type='radio'][name='rate']:checked").val();

253 votes

En jquery, ce serait $("input[name=rate]:checked").val()

1 votes

Je ne comprends pas, y a-t-il deux éléments avec le même ID ?

3 votes

@mzalazar Non, chaque bouton radio a son propre ID mais tous ont le même nom, ce qui les place dans un groupe. Si vous en sélectionnez un, l'autre est désélectionné. Avec la réponse de Kamran Ahmed, vous pouvez vérifier lequel des boutons radio du groupe est sélectionné et obtenir uniquement la valeur de celui qui est sélectionné (coché).

151voto

Joe Points 1788

Vous pouvez obtenir la valeur en utilisant la fonction checked propriété.

var rates = document.getElementsByName('rate');
var rate_value;
for(var i = 0; i < rates.length; i++){
    if(rates[i].checked){
        rate_value = rates[i].value;
    }
}

14 votes

Étant donné qu'une seule radio peut être vérifiée, je m'attendrais normalement à une break ou return à l'intérieur du if pour arrêter les passages supplémentaires dans la boucle. Un point mineur, mais un bon style.

2 votes

C'est l'implémentation vanille la plus propre pour cette question. Félicitations !

42voto

Daniel Points 2637

Pour vous, qui vivez sur le fil du rasoir :

Il existe maintenant quelque chose appelé RadioNodeList et l'accès à sa propriété value renverra la valeur de l'entrée actuellement cochée. Ainsi, il ne sera plus nécessaire de filtrer d'abord l'entrée "cochée", comme c'est le cas dans de nombreuses réponses publiées.

Exemple de formulaire

<form id="test">
<label><input type="radio" name="test" value="A"> A</label>
<label><input type="radio" name="test" value="B" checked> B</label>
<label><input type="radio" name="test" value="C"> C</label>
</form>

Pour récupérer la valeur vérifiée, vous pourriez faire quelque chose comme ceci :

var form = document.getElementById("test");
alert(form.elements["test"].value);

Le JSFiddle pour le prouver : http://jsfiddle.net/vjop5xtq/

Veuillez noter que cette fonctionnalité a été mise en œuvre dans Firefox 33 (tous les autres navigateurs majeurs semblent la supporter). Les navigateurs plus anciens nécessiteront un polfyill pour la fonction RadioNodeList pour que cela fonctionne correctement

1 votes

form.elements["test"].value fonctionne très bien dans Chrome [Version 49.0.2623.87 m].

1 votes

Il faut que ce soit un formulaire, on ne peut pas utiliser par exemple un div. Sinon, cela fonctionne dans FF 71.0.

6voto

pradeep Points 41

En Javascript, nous pouvons obtenir les valeurs en utilisant l'identifiant " getElementById() "dans le code que vous avez posté ci-dessus contient le nom et non pas l'identité. donc vous devez modifier comme ceci

if (document.getElementById('r1').checked) {
  rate_value = document.getElementById('r1').value;
}

utilisez cette valeur de taux en fonction de votre code

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X