186 votes

Bouton Radio obtenir la Valeur avec le Javascript

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 revient toujours pas défini. 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>

337voto

jbabey Points 20696

jQuery:

$('input[name="genderS"]:checked').val();

http://jsfiddle.net/Xxxd3/609/

javascript:

var radios = document.getElementsByName('genderS');

for (var i = 0, length = radios.length; i < length; i++) {
    if (radios[i].checked) {
        // do whatever you want with the checked radio
        alert(radios[i].value);

        // only one radio can be logically checked, don't check the rest
        break;
    }
}

http://jsfiddle.net/Xxxd3/610/

Edit: Merci HATCHA et jpsetung pour votre modifier des suggestions.

178voto

Fontas Points 29

Cela fonctionne avec tout explorer..

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

C'est le moyen le plus pure pour obtenir la valeur de tout type d'entrée.. Vous devez inclure jQuery chemin..

16voto

jptsetung Points 3204

Depuis jQuery 1.8, la syntaxe correcte pour la requête est

$('input[name="genderS"]:checked').val();

Pas $('input[@name="genderS"]:checked').val(); plus, ce qui était travailler dans jQuery 1.7 (avec le @).

7voto

WereWolf - The Alpha Points 49671

Essayez ceci

function findSelection(field) {
    var test = document.getElementsByName(field);
    var sizes = test.length;
    alert(sizes);
    for (i=0; i < sizes; i++) {
            if (test[i].checked==true) {
            alert(test[i].value + ' you got a value');     
            return test[i].value;
        }
    }
}


function submitForm() {

    var genderS =  findSelection("genderS");
    alert(genderS);
    return false;
}

Un violon ici.

6voto

Michael Laffargue Points 5190

Edit: Comme dit par Chips_100 vous devez utiliser :

var sizes = document.theForm[field];

directement, sans l'aide de la variable de test.


Vieille réponse:

Ne devriez-vous pas eval comme cela ?

var sizes = eval(test);

Je ne sais pas comment cela fonctionne, mais pour moi, vous êtes la seule copie d'une chaîne.

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: