2010-11-09 4 views
0

J'ai une forme simple:valeur Passing pour résultat avec jQuery

<form id="radio_form"> 
    <fieldset> 
    <label><input type="radio" name="color" value="1" />Red</label><br /> 
    <label><input type="radio" name="color" value="2" />Yellow</label><br />  
    <label><input type="radio" name="color" value="3" />Blue</label><br /> 
    <label><input type="radio" name="color" value="4" />Purple</label><br /> 
    </fieldset> 

    <fieldset> 
    <label><input type="radio" name="time" value="6" />12</label><br /> 
    <label><input type="radio" name="time" value="7" />11</label><br />  
    <label><input type="radio" name="time" value="8" />10</label><br /> 
    <label><input type="radio" name="time" value="9" />9</label><br /> 
    </fieldset> 
</form> 

Je suis en train de passer les deux valeurs sélectionnées en tant que somme au .result malheureusement .result montre que des valeurs de première entrée [couleur ] Comment puis-je saisir les résultats des deux: entrée [couleur] et entrée [heure]?

C'est ma fonction:

$(function(){ 
    var value = $('input:radio:checked').val(); 

    $('.result').html(value) 


}); 

Un grand merci pour l'aide à l'avance.

Dom

Répondre

3

Comme la plupart des getter de surcharge jQuery, val() ne renvoie que la valeur du premier élément. Vous pouvez utiliser carte() et rejoindre le tableau résultant:

$(function() { 
    var value = $('input:radio:checked').map(function() { 
     return this.value; 
    }).get().join(" "); // You could join with a comma if you like 

    $('.result').text(value); // Use text() unless you're adding HTML 
}); 

Ahh, il semble que vous êtes après un total en cours d'exécution. Dans ce cas, vous aurez besoin each() à la place:

$(function() { 
    var value = 0; 

    $('input:radio:checked').each(function() { 
     value += +this.value; 
    }); 

    $('.result').text(value); // Use text() unless you're adding HTML 
}); 

+this.value dans le code ci-dessus la valeur contraint à un certain nombre.

+0

Cela fonctionne très bien, le seul problème est que je n'ai pas spécifié que je veux une somme de ces valeurs en conséquence. Pardon. comment puis-je faire ça? – Dom

+0

@Dom: J'ai mis à jour ma réponse pour vous donner une solution pour cela aussi. –

0
$(function(){ 
    $(".result").html(""); // clear result 
    $("input:radio:checked").each(function() { 
     $(".result").append($(this).val()); // append value of each matched selector 
    }); 
});