Я искал решение, подобное этому, которое вызвало бы , при этом пользователю не нужно было бы оставлять элемент , но которое работало бы для всех случаев, включая случаи, указанные Якубом в его посте. * Т.е. 1003 *
- Обычный набор
- Вставка мышью
- Автозаполнение
В идеале я также хотел получить решение jQuery, поскольку использовал различные селекторы jQuery и т. Д., И не хотел, чтобы хлопот «разворачивания» моих объектов jQuery попадал в элемент DOM.
Я выбрал решение с использованием 3 разных триггеров событий - см. Комментарии в примере кода ниже, чтобы узнать, почему:
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
Я ожидал, что использование нескольких подобных событий может привести к многократному запуску функции. В моем тестировании в Firebug этого не произошло. Однако мне повезло, что я не возражал, если функция выполнялась «слишком много раз», и поэтому не проверял этот конкретный аспект дальше (например, в других браузерах).