Descubrí que el evento de cambio de jQuery en un cuadro de texto no se activa hasta que hago clic fuera del cuadro de texto.
HTML:
<input type="text" id="textbox" />
JS:
$("#textbox").change(function() {alert("Change detected!");});
Mi aplicación requiere que el evento se active en cada cambio de carácter en el cuadro de texto. Incluso intenté usar keyup en su lugar ...
$("#textbox").keyup(function() {alert("Keyup detected!");});
... pero es un hecho conocido que el evento keyup no se activa al hacer clic con el botón derecho y pegar.
¿Alguna solución? ¿Tener ambos oyentes va a causar algún problema?
Respuestas:
La vinculación a ambos eventos es la forma típica de hacerlo. También puede vincularse al evento pegar.
Puede vincularse a múltiples eventos como este:
Si desea ser pedante al respecto, también debe unirse al mouseup para atender el arrastre de texto y agregar una
lastValue
variable para asegurarse de que el texto realmente haya cambiado:Y si desea ser
super duper
pedante, debe usar un temporizador de intervalo para atender el llenado automático, los complementos, etc.fuente
.on('change keyup paste', function() {...}
en realidad dispara varias veces! Si escribí un carácter y luego hice clic afuera, los eventos 'cambio' y 'keyup' se activan, lo que lleva a que la función se ejecute varias veces. Si hago clic con el botón derecho en pegar y luego hago clic afuera, 'cambiar' y 'pegar' se activan. ¡Infierno! ¡Al usar Ctrl + V para pegar y luego hacer clic afuera dispara tres veces!lastValue
variable para asegurarse de que realmente haya cambiado.En los navegadores modernos, puede usar el
input
evento :MANIFESTACIÓN
fuente
Esto funciona para escribir, pegar, hacer clic con el botón derecho del mouse, etc.
fuente
HTML:
JS:
fuente
Prueba esto:
Ver demostración en JSFiddle .
fuente
bind()
?keyup
ychange()
tiene su propio comportamiento típico por lo que quiere Identificación del evento para ejecutar a continuación,paste
podría ser la opciónbind
lugar deon
.Pruebe el siguiente código:
fuente
event to be fired on every character change in the textbox
"...but it's a known fact that the keyup event isn't fired on right-click-and-paste."
Leer tus comentarios me llevó a una solución sucia. Esta no es una manera correcta, lo sé, pero puede ser una solución.
fuente