Szukałem rozwiązania takiego jak to, które wyzwalałoby bez konieczności opuszczania przez użytkownika elementu, ale które zadziałałoby we wszystkich przypadkach, w tym zidentyfikowanych przez Jakuba w swoim poście. To znaczy.
- Normal wpisując
- wklejanie elementów za pomocą myszki
- autouzupełnianie
ja również idealnie chciał rozwiązanie jQuery jak używałem różnych selektorów jQuery itp i nie chce kłopotów z „rozpakowaniu” moje obiekty jQuery, aby dostać się do elementu DOM.
poszedłem do rozwiązania przy użyciu 3 różnych wyzwalaczy zdarzeń - patrz komentarze w próbce kodu poniżej dlaczego:
var valuechanged = function() {
// do something
};
var inputtowatch = $('.selector');
inputtowatch.on('input', valuechanged);
inputtowatch.on('keyup', valuechanged); // input event is buggy and doesn't catch delete/backspace in IE, but can't just use keyup alone as that doesn't catch paste and automcomplete
inputtowatch.on('propertychange', valuechanged); // input event not supported in IE < 9
Spodziewałem się, że stosując wiele zdarzeń jak może to spowodować funkcji wyrzuceniu wielokrotnie . Podczas moich testów w Firebug tak się nie stało. Jednak miałem szczęście nie zwracać uwagi na to, czy funkcja działała "zbyt wiele" razy, więc nie przetestowałem tego konkretnego aspektu dalej (np. Inne przeglądarki).
Zobacz [$ ("# some-input") .changePolling()] (https://gist.github.com/2944926); dla opakowania, które sprawdza bieżącą wartość i wyzwala '.change()' jeśli uległo zmianie. –