Когда события изменения textarea не запускаются? - PullRequest
4 голосов
/ 19 января 2012

Я полагаюсь на событие изменения, которое запускается при изменении содержимого текстовой области. Согласно jquery docs , это не сработает, пока текстовая область не потеряет фокус. При каких обстоятельствах событие не может быть инициировано? Будет ли перехватывать страницу, возвращаться назад, переходить по ссылке и т. Д. Всегда, когда текстовая область теряет фокус и будет запущена?

Или, другими словами, возможно ли оставить страницу без текстовой области, теряющей фокус ввода?

Ответы [ 5 ]

3 голосов
/ 19 января 2012

При различных тестах событие изменения не запускается, когда:

  • пользователь нажимает любую кнопку браузера (кнопка возврата, обновления, кнопка возврата домой ... (Chrome, Firefox и Opera в Linux, но срабатывает при нажатии на адресную строку)
  • пользователь использует ярлыки (f5, ctrl + u ...) (проверено на Chrome+ Firefox + Opera) .

Вы можете проверить пример здесь: http://jsfiddle.net/Atinux/S6TkP/

Поэтому я рекомендую вам дополнительно использовать события keyUp и keyDown для вашего ввода иформы textarea.

2 голосов
/ 19 января 2012

Я бы пошел к определению события W3c.

[http://www.w3.org/TR/DOM-Level-2-Events/events.html][1]

Событие изменения происходит, когда элемент управления теряет фокус ввода и его значение было изменено с момента получения фокуса.,Это событие действительно для элементов INPUT, SELECT и TEXTAREA.

  • Пузыри: Да
  • Отменяемые: Нет
  • Информация о контексте: Нет

Каждый раз, когда он теряет фокус, ондолжен быть уволен.

1 голос
/ 12 апреля 2012

В Safari и Chrome всякий раз, когда вы изменяете текст, запускается событие CHANGE.Однако, если вы удалите весь текст, событие CHANGE больше не будет запускаться.Это ошибка.Вот почему люди используют события KEYPRESS в качестве обходного пути

0 голосов
/ 19 января 2012

Лучше использовать событие keyUp / keyDown, потому что событие изменения срабатывает только тогда, когда текстовое поле / ввод были изменены, а элемент потерял фокус.

0 голосов
/ 19 января 2012

Событие будет инициировано, но вы не сможете его надежно прослушать. Элементы формы теряют фокус, когда страница выгружается, но существует условие состязания, когда запускается четное событие и когда вызывается слушатель. Если ваш слушатель вызывается до завершения загрузки страницы, вы могли бы получить обратный вызов, но это далеко от гарантии.

Если вы хотите более надежно отслеживать изменения в textarea, вам лучше прослушать событие keypress.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...