Я обнаружил, что событие изменения jQuery в текстовом поле не срабатывает, пока я не щелкну за пределами текстового поля.
HTML:
<input type="text" id="textbox" />
JS:
$("#textbox").change(function() {alert("Change detected!");});
Посмотреть демо на JSFiddle
Мое приложение требует, чтобы событие запускалось при каждом изменении символа в текстовом поле. Я даже попытался вместо этого использовать keyup ...
$("#textbox").keyup(function() {alert("Keyup detected!");});
... но это известный факт, что событие keyup не запускается при щелчке правой кнопкой мыши и вставке.
Любое решение? У обоих слушателей будут проблемы?
Ответы:
Привязка к обоим событиям - типичный способ сделать это. Вы также можете привязаться к событию вставки.
Вы можете привязать к нескольким событиям, например:
Если вы хотите быть педантичным в этом отношении, вам также следует привязать к mouseup, чтобы перетаскивать текст, и добавить
lastValue
переменную, чтобы гарантировать, что текст действительно изменился:И если вы хотите быть
super duper
педантичным, вам следует использовать интервальный таймер для автоматического заполнения, плагинов и т. Д .:источник
.on('change keyup paste', function() {...}
на самом деле срабатывает несколько раз! Если я набрал символ, а затем щелкнул снаружи, срабатывают события 'change' и 'keyup', что приводит к многократному выполнению функции! Если я вставил правой кнопкой мыши, а затем щелкнул снаружи, «изменения» и «вставить» оба запускаются. Черт! При использовании Ctrl + V для вставки и последующем щелчке снаружи он запускается трижды !!lastValue
переменной, чтобы убедиться, что она действительно изменилась.В современных браузерах, вы можете использовать на
input
событие :DEMO
источник
Это работает для набора текста, вставки, щелчка правой кнопкой мыши и т. Д.
источник
HTML:
JS:
источник
Попробуй это:
См. Демонстрацию на JSFiddle .
источник
bind()
?keyup
иchange()
имеет свое собственное типичное поведение так ид он хочет выполнить событие , тоpaste
может быть вариантомbind
вместо вместоon
.Попробуйте следующий код:
источник
event to be fired on every character change in the textbox
"...but it's a known fact that the keyup event isn't fired on right-click-and-paste."
Чтение ваших комментариев привело меня к грязному исправлению. Я знаю, что это неправильный способ, но его можно обойти.
источник