2011-06-24 13 views
5

Estoy implementando una función de tipo "Dirección de facturación es la misma dirección" que cuando se marca una casilla llena los campos basados ​​en los otros campos. Funciona perfectamente.Casilla de verificación Jquery Trigger: función vinculada al evento click antes de que se establezca el atributo checked

La función para el evento click ..

if ($(this).attr('checked')) { 
     // copy address fields to billing fields 
    } 
    else{ 
     // clear fields 
    } 

Ahora uso un (plugin de jQuery tecla de acceso directo) evento para auto llenar todos los campos del formulario para que pueda demo y probar la forma fácil y rápida . En lugar de hacer trampa y el llenado de los campos de la cabecera como los campos de dirección que quiero usar

$("#CheckboxForAutofillId").trigger('click'); 

Esto no funciona la primera vez que desencadenará el evento, al igual que en la función anterior que se llama comprueba el atributo de comprobado, sin embargo el disparador ('clic'), aparentemente llama al evento ANTES de que cambie el atributo.

Lo que significa para mí para simular correctamente tengo que hacer esto ..

$("#CheckboxForAutofillId").attr("checked", "checked"); // sets checked 
$("#CheckboxForAutofillId").trigger('click');   // fires event then 'unchecks' 
$("#CheckboxForAutofillId").attr("checked", "checked"); // rechecks 

Leyendo la página jQuery para el gatillo, no me di cuenta este mencionado, y no he tomado la molestia de excavar a través de la fuente para ver lo que está ocurriendo en realidad, pero me parece que, idealmente, el evento desencadenante debería establecer el atributo 'marcado' antes de disparar el evento en sí, ya que es una mejor simulación de una persona que marca una casilla de verificación?

¿Echo de menos algo?

Respuesta

8

debe usar change() en lugar de click().

$("#CheckboxForAutofillId").change(function() 
{ 
    if(this.checked) ... 
}); 
+1

siempre felices de ver el uso correcto de js/jquery mix +1 – BumbleB2na

Cuestiones relacionadas