Comment obtenir de la radio sélectionnée valeur du bouton?
Je vais avoir un problème étrange avec mon JS programme. J'ai eu cela fonctionne correctement, mais pour une raison quelconque, il n'est plus de travail. Je veux juste trouver la valeur d'un bouton radio (qui est sélectionné) et le retour à une variable. Pour une raison quelconque, il conserve son retour undefined
.
Voici mon code:
function findSelection(field) {
var test = 'document.theForm.' + field;
var sizes = test;
alert(sizes);
for (i=0; i < sizes.length; i++) {
if (sizes[i].checked==true) {
alert(sizes[i].value + ' you got a value');
return sizes[i].value;
}
}
}
submitForm
:
function submitForm() {
var genderS = findSelection("genderS");
alert(genderS);
}
HTML:
<form action="#n" name="theForm">
<label for="gender">Gender: </label>
<input type="radio" name="genderS" value="1" checked> Male
<input type="radio" name="genderS" value="0" > Female<br><br>
<a href="javascript: submitForm()">Search</A>
</form>
- Double Possible de Comment récupérer la valeur du bouton radio sélectionnée à l'aide de js
Vous devez vous connecter pour publier un commentaire.
JavaScript:
http://jsfiddle.net/Xxxd3/610/
Edit: Merci HATCHA et jpsetung pour votre modifier suggestions.
@
syntaxe est déconseillée même plus tôt que (jquery 1.2)@
devrait être définitivement supprimélength
ici. C'est comme l'avenir du construit en.document.querySelector()
devrait probablement être l'approche recommandée dans le droit JavaScript maintenant.Cela fonctionne avec tout explorer.
C'est le moyen le plus pure pour obtenir la valeur de tout type d'entrée.
Vous pouvez aussi ne pas nécessité d'inclure jQuery chemin.
document.querySelector(...)
estnull
.var selector = document.querySelector('input[name="genderS"]:checked'); if(selector) console.log(selector.value);
:checked
truc totalement cloué pour moi.. pour moi le fixer à la lecture de boutons radio d'un Météore Modèle de formulaire a étéaccountType = template.find("[name='optradio']:checked").value;
document.forms.your-form-name.name-shared-by-radio-buttons.value
Depuis jQuery 1.8, la syntaxe correcte pour la question est
Pas
$('input[@name="genderS"]:checked').val();
plus, ce qui était travailler dans jQuery 1.7 (avec le @).La solution la plus simple:
ECMAScript 6 version
Essayer cette
Un violon ici.
Edit:
Comme dit par Chips_100 vous devez utiliser :
directement, sans l'aide de la variable de test.
Vieille réponse:
Ne devriez-vous pas
eval
comme ça ?Je ne sais pas comment cela fonctionne, mais pour moi, vous êtes la seule copie d'une chaîne.
var sizes = document.theForm[field];
et supprimer la première affectation, afin de ne pas utilisertest
variable de plus.eval('var sizes=document.theForm.' + field)
?var sizes = eval(test);
serait de travailler de cette façon (je viens de testet dans firebug).field
entre parenthèses. Toute devine pourquoi?Au cas où quelqu'un était à la recherche d'une réponse, et a atterri ici, comme moi, à partir de Chrome 34 et Firefox 33, vous pouvez effectuer les opérations suivantes:
ou plus simple:
refrence: https://developer.mozilla.org/en-US/docs/Web/API/RadioNodeList/value
C'est de la pure JavaScript, basé sur la réponse de @Fontas, mais avec le code de sécurité pour renvoyer une chaîne vide (et éviter un
TypeError
) si il n'y a pas un bouton d'option sélectionné:Le code se décompose comme ceci:
<input>
type, (b) a unename
attribut degenderS
, et (c) est vérifiée.genderSRadio
variable est truthy si Ligne 1 trouve le contrôle et null/falsey si elle ne le fait pas.Pour JQuery, utilisez @jbabey réponse, et note que si il n'y a pas un bouton d'option sélectionné, il sera de retour
undefined
.Ici est un Exemple pour les Radios où aucun Checked="checked" attribut est utilisé
DÉMO : http://jsfiddle.net/ipsjolly/hgdWp/2/ [Cliquez sur Rechercher sans en choisir aucune Radio]
Source : http://bloggerplugnplay.blogspot.in/2013/01/validateget-checked-radio-value-in.html
À l'aide d'un pur javascript, vous pouvez gérer la référence à l'objet qui a distribué l'événement.
permet supposons que vous avez besoin de placer les différentes rangées de boutons radio dans un formulaire, chacun avec des noms d'attribut ('option1','option2", etc), mais le même nom de classe. Peut-être que vous en aurez besoin pour plusieurs lignes où chacun devra soumettre une valeur basée sur une échelle de 1 à 5 se rapportant à une question. vous pouvez écrire votre code javascript comme ceci:
Je voudrais également insérer le résultat final dans une forme cachée de l'élément pour être soumis avec le formulaire.
Si c'est possible pour vous attribuer un Id pour votre élément de formulaire(), cela peut être considéré comme une alternative sûre façon (spécialement lorsque la radio du groupe nom de l'élément n'est pas unique dans le document):
HTML:
etc ensuite, utilisez simplement
Ou