Слушайте для удаления входного значения - PullRequest
3 голосов
/ 18 ноября 2010

Один из наиболее рекомендуемых способов прослушать изменение входного текстового поля - привязать это поле к событию key up. Это прекрасно работает в большинстве случаев. Но есть случаи, когда это не работает. Например, в Firefox есть возможность, когда текст уже выделен, удалить его с помощью контекстного меню. И это не сработает. Я не нашел ни одного события, которое вызывается для этого текстового поля при выполнении этого. Любые предложения, как я могу реагировать на это (в чистом Javascript или jQuery)?

Ответы [ 2 ]

8 голосов
/ 18 ноября 2010

Смотрите событие oninput, и я пишу об этом здесь .

oninput запускается для всех форм ввода текста - включая вырезание, вставку, отмену, повтор, очистку, перетаскивание и исправление орфографии. Это событие HTML 5, которое не поддерживается в Internet Explorer 8 и более ранних версиях (но в последней версии IE 9). Однако Internet Explorer поддерживает проприетарное событие для всех объектов DOM - onpropertychange. Он срабатывает всякий раз, когда изменяется значение элемента ввода.

Я не заметил, что вы пометили & mdash; с тех пор, как вы это сделали, вероятно, стоит упомянуть, что я написал плагин для реализации кросс-браузера событий oninput. Вы можете найти это здесь .

0 голосов
/ 18 ноября 2010

Лучший способ - сохранить значение в событии focus и перепроверить значение в событии blur. Прослушивание ключевых событий запускает множество обычно избыточных процессов. В большинстве случаев вас интересует только значение поля, когда пользователь вводит (или удаляет) его.

Это работает в разных браузерах, хотя делегирование фокуса / размытия может быть проблемой в некоторых браузерах. Самый простой способ - применить слушателей размытия / фокуса непосредственно к элементу.

Только исключения являются реализациями, такими как autosuggest / complete, и даже в этом случае может потребоваться отменить ввод ключа, поэтому он срабатывает только тогда, когда пользователь бездействует в течение нескольких сотен миллисекунд.

...