Вы можете добавить обычного прослушивателя событий в поле ввода следующим образом. (используя jQuery)
$(myTextControl).change(function() {
...
/* do appropriate event handling here */
...
});
Хорошо, учитывая, что javascript, который изменяет входное значение, не контролируется вами, становится трудно. У вас есть два варианта:
1.) Совместимость с Crossbrowser: Реализация опроса входного значения с помощью функции, которая постоянно проверяет, изменилось ли значение. (Что-то в этом роде).
//at beginning before other scripts changes the value create a global variable
var oldValue = myTextControl.value;
function checkIfValueChanged() {
if(myTextControl.value != oldValue) {
$(myTextControl).trigger("change");
clearInterval(checker);
}
}
//every 500ms check if value changed
var checker = setInterval('checkIfValueChanged()', 500);
Примечание : если ваш сценарий или пользователь также может изменить значение, вы должны реализовать что-то, чтобы перехватить это, чтобы не вызывать событие изменения несколько раз.
Если значение может изменяться несколько раз с помощью внешнего скрипта, просто запустите функцию интервала вместо ее отмены и просто обновите oldValue;
2.) AFAIK Пока не поддерживается всеми браузерами (проверьте его на тех, которые вам нужны)
Вы можете привязать к специальному событию DOM Level 3Event: DOMAttrModified
(в Firefox, может быть, другие тоже, я думаю, у Opera тоже есть, Safari ??, Chrome ??) и в IE, конечно, другое имя propertychange
(и является частной собственностью и отличается от поведения W3C)
Теперь в идеале вы могли бы объединить эти два варианта и проверить, есть ли поддержка DOMAttrModified
или propertychange
, и использовать их соответственно или использовать решение для опроса.
Чтение ссылок
W3C DOM Mutation Events
Событие W3C DOMAttrModified
MSDN DHTML property change Событие
Обновлен подключаемый модуль jQuery CSS для мониторинга свойств
Последняя ссылка - это какой-то парень, который в основном уже создал плагин jQuery, выполняющий описанные мной вещи (не проверенный мной, предоставленный только в качестве ссылки)