2012-01-25 16 views
10

Tengo una variable llamada category que debe cambiar su valor de acuerdo con el botón de opción seleccionado. El problema es que no lo entiendo con el clic de un botón de radio u otro, el valor cambiará instantáneamente.JQuery cambiar el valor del botón de opción

Este es el código que tengo:

<form> 
<input type="radio" name="category" value="doctor" /> Doctor 
<input type="radio" name="category" value="police" checked /> Policia 
</form> 

var category = $('[name="category"]:checked').val(); 

Necesito que cambia automáticamente el valor de la variable category al hacer clic en los botones de radio.

Respuesta

13

es necesario cambiar el valor de categoría cada vez que un usuario cambia el botón de opción seleccionado. Por lo tanto, necesitará un evento para activar cuando el usuario haga clic en una radio. Se puede extraer de la FIDDLE

var category = null; 
$("input[name='category']").click(function() { 
    category = this.value; 
}); 
1

Creo que se necesita simplemente algo como esto:

var category; 

    $('radio[name="category"]').click(function(){ 
     category=this.value; 
    }); 
+0

Creo que es mejor usar el evento "cambiar", es más general que "hacer clic". – T30

1

En lugar de utilizar category uso variable de $('[name="category"]:checked').val() donde desea que el valor del botón de opción marcada. De lo contrario, puede utilizar el evento change o click para establecer el valor de los botones de opción checked en la variable category.

+0

Este es un enfoque directo en lugar de implementar el evento 'change'. – Peter

34

conectar un controlador de eventos para el evento change:

$(':radio[name="category"]').change(function() { 
    var category = $(this).filter(':checked').val(); 
}); 
+3

Desea utilizar el evento 'change' como dice esta respuesta, no el' click' que otros asesoran. El uso de 'change' le garantiza la actualización de su valor incluso si el usuario navega y selecciona el botón de opción con su teclado. – idrumgood

+0

la pregunta era claramente "onclick", no en el cambio – albanx

+2

@albanx: 'click' solo se activará si se hace clic en el botón (incluso si está desactivado). 'change' fire cuando se cambia el valor (independientemente del método, ya sea el teclado o el mouse), lo que no puede suceder si está deshabilitado. – Blender

0

utilizan el .change() con el fin de capturar el evento de cambio para un botón de radio.

1
var category; 
    $(':radio[name="category"]').change(function() { 
     category=this.value; 
    }); 

y esto es una demostración jsfiddle.net.

1

No debe dar el mismo ID para más de un elemento, se debe utilizar la clase en lugar de esta manera:

<form> 
    Option 1<input type="radio" name="opt" class="radio" value="Option 1"> 
    Option 2<input type="radio" name="opt" class="radio" value="Option 2"> 
</form> 

en lugar de:

<form> 
    Option 1<input type="radio" name="opt" id="radio" value="Option 1"> 
    Option 2<input type="radio" name="opt" id="radio" value="Option 2"> 
</form> 

y su código sigue siendo el mismo y debería funcionar bien :)

Cuestiones relacionadas