2012-03-20 20 views
5

Supongamos que tengo 3 botones de radio con diferentes valores para cada botón de opción y un cuadro de texto que mostraría la suma de cada botón de opción que esté marcado. ¿Qué evento de Jquery o Javascript debo usar para resumir los valores cada vez que se hace clic en un botón de opción?¿Cómo sumar valores de botón de radio usando Javascript o jQuery?

Originalmente, mi botón de radio tiene un cuadro de texto al lado para mostrar el valor del botón de opción seleccionado pero tengo dificultades para activar un evento para resumir los valores de los cuadros de texto que cambian por sí mismo (ya que keyup o keydown no funcionarán en esta situación dada).

Para explicar mejor lo que quiero lograr, a continuación hay una muestra de mi trabajo. Cualquier ayuda y consejos serían apreciados. Gracias por adelantado.

P.S .: Si no es demasiado pedir, también puede agregar una muestra que funcione para que pueda jugar con la que está trabajando. Gracias.

Yes 
<input type="radio" name="radio1" value="10" /> 
No 
<input type="radio" name="radio1" value="0" /><br /> 
Yes 
<input type="radio" name="radio2" value="10" /> 
No 
<input type="radio" name="radio2" value="0" /><br /> 
Yes 
<input type="radio" name="radio3" value="10" /> 
No 
<input type="radio" name="radio3" value="0" /><br /> 
Total Score: 
<input type="text" name="sum" /> 
+0

me gustó la primera versión de su pregunta, por lo que no tuvo necesidad de editarla. Pero si, por favor no te olvides de resaltar el código para que todos puedan ver los elementos del Formulario HTML. (usando CTRL + K en el texto seleccionado). Mi respuesta está escrita a continuación con un ejemplo. Espero que ayude – Neysor

Respuesta

6

lo haría así:

function calcscore(){ 
    var score = 0; 
    $(".calc:checked").each(function(){ 
     score+=parseInt($(this).val(),10); 
    }); 
    $("input[name=sum]").val(score) 
} 
$().ready(function(){ 
    $(".calc").change(function(){ 
     calcscore() 
    }); 
}); 

ver este js fiddle example

la estructura html es igual a la suya, solamente he añadido una clase calc, por lo que puedo seleccionarlos más fácil.

+0

Por favor, nunca use 'parseInt' sin el segundo argumento (base) a menos que le guste cazar errores raros y extraños más adelante. Su cuarta línea debería leer 'score + = parseInt ($ (this) .val(), 10);' – vzwick

+0

@vzwick lo cambié. Sé que puede haber un comportamiento extraño, pero sobre todo no si no tienes ceros a la izquierda o algo así :) – Neysor

+1

Puedes confiar absolutamente en que el usuario (OP en este caso) * se las arreglará para introducir eventualmente un '0' - La ley de Murphy;) ¡Salud! – vzwick

0

Asumir botones de radio están dentro de un formulario con id = 'myForm', y el cuadro de texto tiene id = 'totalScore' a continuación:

var sum = 0; 
$("#myForm").find("input[type='radio']:checked").each(function (i, e){sum+=$(e).val();}); 
$("#totalScore").val(sum); 
+0

Gracias por la entrada útil. –

Cuestiones relacionadas