2010-02-11 6 views
44

Tengo el siguiente código de jQuery en su sitio en mi página:jQuery textbox.val ('xxxx') no está causando cambios al disparar?

var isChanged = false; 
$(document).ready(function() 
{ 
    $('.change').change(function() { 
     isChanged = true; 
    }); 
}); 

estoy usando un plugic que modifica el valor del cuadro de texto que está vinculada a la utilización de:

target.val('xxxx'); 

el cuadro de texto en el html (de asp.net) es:

<input name="ctl00$cphHolder1$rptFlex$ctl01$txtLeftRank" 
    type="text" 
    value="52°" 
    id="ctl00_cphHolder1_rptFlex_ctl01_txtLeftRank" 
    class="change atiselector" /> 

Cuando el valor del cuadro de texto se cambia el uso de código, el cambio no está disparando. Si escribo en el cuadro de texto, el cambio se dispara. ¿Qué me estoy perdiendo?

Respuesta

72

Así es como funciona. Si necesita el cambio de valor para activar el evento "cambio", que puede hacer explícitamente por:

$('input#whatever').val('hi').change(); 
+2

+1 Absolutamente correcto. –

+0

Una de las cosas más estúpidas de la historia. Tentado a parchar val() para que se comporte sensiblemente –

+4

@AndrewBullock y si implementó este parche "sensato", es probable que descubra que degrada significativamente el rendimiento de su aplicación. – NobodyMan

4

$('.change').change() disparará el evento. El solo hecho de cambiar los atributos no activa el evento.

2

Según DOM Level 2 Event Specification:

El evento de cambio se produce cuando un control pierde el foco de entrada y su valor ha sido modificado desde que se enfocó.

Eso significa que el evento de cambio está diseñado para disparar en el cambio por la interacción del usuario. Los cambios programáticos no provocan que se active este evento.

Cuestiones relacionadas