asp.net - metodo - llamar funcion asp net desde javascript
¿Por qué el evento javascript onchange no se activa si la función autocompletar está activada? (6)
Acabo de desactivar Autocompletar para los cuadros de texto que necesito para activar un evento de cambio de texto
''Turn off Auto complete
''(it needs to fire the text change event)
txtYourTextBox.Attributes.Add("AutoComplete", "off")
Solo ponlo en la carga de la página.
Alternativamente, puede agregar el atributo a su marcado en el elemento de input
o en el form
completo:
<input type=text autocomplete=off>
o
<form autocomplete=off>
Tengo un cuadro de texto con un evento onchange. ¿Por qué este evento no se dispara cuando el usuario usa la función de autocompletar para llenar el cuadro de texto?
Estoy trabajando con Internet Explorer. ¿Existe una solución estándar y relativamente simple para solucionar este problema, sin que tenga que desactivar la función de autocompletar?
Acabo de descubrir que el uso de jQuery 1.4 para establecer el evento de cambio puede resolver este problema. Parece que es la solución más fácil a este problema si ya está familiarizado con jQuery.
Descubrí que el siguiente JavaScript jQuery (v1.10 +) funciona en el caso de que el texto se complete automáticamente para campos de entrada de texto HTML. Esto se probó para funcionar de manera confiable al menos en Safari 6.1.1 en Mac OS X 10.8.5, pero también debería funcionar en otros navegadores compatibles:
$("input:text[id=text_field_id]").bind("focus change keyup blur", function(event) {
// handle text change here...
});
Parecía que la adición del controlador de eventos borrosos era la clave para hacer esto, aunque los otros manejadores de eventos ayudan a asegurar que se llame al controlador de eventos cada vez que cambia el texto, ya sea debido a una edición o nueva entrada por autocompletar del navegador característica.
Simplemente reemplace el código "input:text[id=text_field_id]"
con el selector correspondiente para el campo de entrada de texto deseado, o si usa el atributo id
para referirse a su campo, reemplace text_field_id
con el valor del atributo id
su campo de texto.
Me encontré con esta característica molesta antes y mi solución en ese momento era usar el evento onfocus para registrar el valor actual del cuadro de texto, y luego usar el evento onblur para verificar si el valor actual ahora coincide con el valor guardado durante onfocus. Por ejemplo
<input type="text" name="txtTest" value="" onfocus="this.originalvalue=this.value" onblur="if (this.value != this.originalvalue) alert(''Test has changed'')"/>
Sobre la base de la respuesta de Tim C, aquí está el simple jquery que surgió para manejar esto para todos los cuadros de texto en una página:
$("input[type=text]").bind("focus change",function(){
this.previousvalue = this.value;
}).blur(function(){
if (this.previousvalue != this.value){
$(this).change();
}
})
Si no te importa cambiar el encendido varias veces, puedes simplificarlo:
$("input[type=text]").blur(function(){
$(this).change();
})
La última vez que tuve ese problema, terminé usando el evento onpropertychange
para Internet Explorer. Lo leí aquí en MSDN : es la forma recomendada de evitarlo.