Обнаружить изменения в отключенном поле - PullRequest
0 голосов
/ 03 октября 2010

Кажется, что события changechange игнорируются, когда поле находится в отключенном состоянии.Есть ли способ запустить код при изменении значения?

<input id="country" onpropertychange="alert(country.value)" disabled="disabled"/>
<input type="button" onclick="country.value='USA'" value="Go" />

Ответы [ 2 ]

0 голосов
/ 31 октября 2013

Да, есть!Короче говоря, вам нужно будет запускать событие propertychange самостоятельно, когда установлен параметр disabled, и для этого вам нужно будет изменить методы получения и установки элементов, которые вы хотите включить / отключить.

Вот несколько хороших статей об этой технике:

К сожалению, вы не можете просто использовать собственный fireEvent для отключенного события в сеттере, потому что оно подчиняется отключенному состоянию.Поэтому нам нужна внешняя система запуска событий.К счастью для нас, ребята из jQuery уже сделали это!

Итак, с этими знаниями я написал плагин fireOnDisable jQuery.Чтобы использовать его, просто примените его к селектору, например:

$('#disabled_thing').fireOnDisable();

Если вы находитесь в браузере, который не поддерживает события изменения свойств, этот плагин ничего не сделает.Это исключительно для IE8-10.Для браузеров не IE (и IE-11) используйте MutationObservers .Для IE7 или ниже вы облажались, потому что они не предоставляют функции установки / получения.

0 голосов
/ 03 октября 2010

Не могли бы вы просто добавить свое событие в атрибут onclick кнопки после country.value='USA'?Например:

<input id="country" disabled="disabled" />
<input type="button" onclick="country.value='USA'; alert(country.value)" value="Go" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...