Quiero añadir una respuesta "tarde", porque luché con change
, keyup
y search
hoy, y tal vez lo que he encontrado al final puede ser útil para otros también. Básicamente, tengo un panel de búsqueda como tipo, y solo quería reaccionar adecuadamente a la presión de la pequeña X (en Chrome y Opera, FF no lo implementa), y borrar un panel de contenido como resultado.
Tenía este código:
$(some-input).keyup(function() {
// update panel
}
$(some-input).change(function() {
// update panel
}
$(some-input).on("search", function() {
// update panel
}
(Están separados porque quería comprobar cuándo y en qué circunstancias se llamó a cada uno).
Resulta que Chrome y Firefox reaccionan de manera diferente. En particular, Firefox lo trata change
como "cada cambio en la entrada", mientras que Chrome lo trata como "cuando se pierde el foco Y se cambia el contenido". Entonces, en Chrome, la función "panel de actualización" se llamó una vez, en FF dos veces por cada pulsación de tecla (una en keyup
, una en change
)
Además, al borrar el campo con la pequeña X (que no está presente en FF) se activó el search
evento en Chrome: no keyup
, no change
.
¿La conclusión? Use en su input
lugar:
$(some-input).on("input", function() {
// update panel
}
Funciona con el mismo comportamiento en todos los navegadores que probé, reaccionando a cada cambio en el contenido de entrada (copiar y pegar con el mouse, autocompletar y "X" incluidos).
onchange
evento?