2010-11-18 4 views
3

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

ответ

8

См. Мероприятие oninput, и я напишу об этом here.

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

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

+0

У вас эта проблема зашита, я думаю. –

+0

@ Тим: ха-ха, я, конечно, пытаюсь :-) –

+0

@Tim: Кроме ошибок, которые он упоминает в своем блоге, да. –

0

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

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

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

Смежные вопросы