Cross-browser JavaScript input live change / paste detection

Existe-t-il un moyen de détection croisée des changements en direct dans un champ de saisie ?

En direct , je veux dire pas quand le champ perd de la mise au point, et non sur la touche suivante, et ainsi de suite. Immédiatement ou quelque chose comme ça.

En utilisant des combinaisons de jQuery et .change() , .keyup() , .bind('paste') et ainsi de suite, je peux travailler à la détection de changement en direct dans certains navigateurs, mais pas tous . L'utilisation de différentes combinaisons permettra de fonctionner quelque peu dans d'autres navigateurs.

Le plus difficile à utiliser est la manipulation de la souris du champ de saisie – la sélection du texte et le déplacement (ce qui est essentiellement coupé et collé), en cliquant avec le bouton droit de la souris et en collant ou en découpe, etc. Pour une raison quelconque même .mousedown() et .mouseup() Ne semblent pas le couper.

La seule solution de navigation croisée que je peux envisager en ce moment est de vérifier la valeur du champ de saisie toutes les 100 milles par seconde et de comparer la valeur par rapport à une valeur mémorisée. Mais cela semble être excessif lorsque la solution événementielle est si proche.

Existe-t-il un plug-in jQuery qui le fait déjà? Ou y a-t-il un autre moyen d'y parvenir?

Pour compléter votre changement et les gestionnaires de clés, vous pouvez ajouter des gestionnaires pour couper / copier / coller . Ils fonctionnent dans Firefox> = 3, IE, Safari et Chrome (mais pas dans Opera / Konqueror).

Cela couvrirait-il tout pour votre cas d'utilisation?

Selon les navigateurs que vous devez prendre en charge, vous pouvez utiliser l' oninput de HTML5.
Il se déclenche immédiatement lorsque l'entrée surveillée change. Dans jQuery, vous feriez simplement:

 $('#my-input').bind('input', function(e) { console.log("#my-input's value changed"); });