Quiero añadir una respuesta "tarde", porque luché con change, keyupy searchhoy, 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 changecomo "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 searchevento en Chrome: no keyup, no change.
¿La conclusión? Use en su inputlugar:
$(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).
onchangeevento?