За исключением changeтолько пожаров, когда поле потеряло фокус. inputзагорается сразу.
jcsanyi
3
Вы пытались найти его?
не определено
2
@ undefined Да, у меня есть вопрос, иначе я бы не создал для него вопрос. В Google появляются только статьи об input элементе и о том, как прикрепить к нему события.
Происходит, когда текстовое содержимое элемента изменяется через пользовательский интерфейс.
Это не совсем псевдоним, keyupпотому что keyupсработает, даже если клавиша ничего не делает (например, нажатие, а затем отпускание клавиши управления вызовет keyupсобытие).
Хороший способ думать об этом так: это событие, которое срабатывает при изменении входных данных. Это включает, но не ограничивается, нажатие клавиш, которые изменяют ввод (так, например, Ctrlсамо по себе это не вызовет событие, а Ctrl-Vвставит некоторый текст), выбор опции автозаполнения, середина в стиле Linux -кликните вставку, перетаскивание и многое другое.
Смотрите эту страницу и комментарии к этому ответу для более подробной информации.
Вы знаете, поддерживает ли jQuery отсутствующую поддержку браузера? (IE8, IE9 несоответствия и т. Д.)
jcsanyi
4
Я только что гуглил «js input event». Существует умение знать, какие термины использовать, чтобы найти то, что вы хотите в Google; это приходит с опытом. А потом, конечно, Google записывает все и использует его, чтобы узнать, что вы на самом деле хотите. Большинство моих поисков касаются документации по API и вопросов программирования, поэтому со временем выяснилось, что когда я ищу что-то, он, вероятно, должен показывать мне документы по API и ответы по программированию.
Джей Дэвид Смит
3
Ну, я искал «входное событие jQuery», я понятия не имел, что это было оригинальное событие JS. То же самое и здесь, первые результаты обычно поступают от SO, которые я считаю в основном фактическими ответами / официальными источниками информации.
шелковый огонь
18
inputна самом деле это больше, чем просто отфильтрованный keyup, например, он будет срабатывать также, когда значение было выбрано из списка ранее использованных значений ... Это было бы что-то, с чем было бы очень трудно справиться, если бы не было inputсобытия.
szeryf
2
oninputтакже срабатывает, когда текст изменяется мышью (либо с помощью перетаскивания, либо с помощью меню, вызываемого правой кнопкой мыши, либо с помощью щелчка средней кнопкой мыши для вставки).
Денилсон Са
157
oninput Событие очень полезно для отслеживания изменений полей ввода.
Однако это не поддерживается в версии IE <9. Но более старые версии IE имеют свое собственное событие, onpropertychangeкоторое делает то же самое, что и oninput.
Так что вы можете использовать это так:
$(':input').on('input propertychange');
Чтобы иметь полную поддержку кроссбраузера.
Так как изменение свойства может быть инициировано для ЛЮБОГО изменения свойства, например, измененное свойство изменено, то вы должны включить это:
Именно то, что мне было нужно. Спасибо. (Я ненавижу поддерживать <IE9.)
DaleyKD
Немного больше информации: «Opera не запускает событие ввода после удаления текста в поле ввода. IE 9 не запускает событие ввода, когда пользователь удаляет символы из ввода, заполненные с помощью клавиатуры, операций вырезания или перетаскивания». developer.mozilla.org/en-US/docs/Web/Events/...
tkane2000
Есть проблема с этим кодом. Если на входном элементе задана максимальная длина, событие 'input' запускается, даже если максимальная длина достигнута, а значение не изменено
nivcaner
Но почему бы не две отдельные функции? Таким образом, нет необходимости проверять тип события или имя свойства. Код может быть в третьей общей функции.
ADTC
17
Используя jQuery, следующие идентичные в действительности:
С input событием в браузерах, которые я тестировал, работает только второй шаблон.
Таким образом, вы ожидаете, что это сработает, но это НЕ (по крайней мере, в настоящее время):
$(':text').input(function(){ doSomething();});
Опять же, если вы хотите использовать делегирование событий (например, чтобы настроить событие на #containerпрежде, чем ваш input.textбудет добавлен в DOM), это должно прийти на ум:
Как сказал Клаустрофоб, oninput поддерживается для IE9 +.
Тем не менее , «Событие oninput содержит ошибки в Internet Explorer 9. Оно не запускается, когда символы удаляются из текстового поля через пользовательский интерфейс только при вставке символов. Хотя событие onpropertychange поддерживается в Internet Explorer 9, но аналогично Событие oninput также содержит ошибки, оно не запускается при удалении.
Поскольку символы могут быть удалены несколькими способами (клавиши Backspace и Delete, клавиши CTRL + X, команда «Вырезать» и «Удалить» в контекстном меню), не существует хорошего решения для обнаружения всех изменений. Если символы удаляются с помощью команды «Удалить» контекстного меню, изменение не может быть обнаружено в JavaScript в Internet Explorer 9 ».
У меня хорошие результаты привязки как к вводу, так и к keyup (и к keydown, если вы хотите, чтобы он запускался в IE, удерживая нажатой клавишу Backspace).
Я думаю, что «input» здесь просто работает так же, как «oninput» в модели событий DOM Level O.
Кстати:
Как прокомментировал silkfire, я тоже погуглил «входное событие jQuery». Таким образом, меня привели сюда, и я был поражен, узнав, что input является приемлемым параметром для команды jquery bind () . В jQuery в действии (стр. 102, изд. 2008) «вход» не упоминается как возможное событие (против 20 других, от «размытия» до «выгрузки»). Это правда, что на с. 92, обратное можно предположить по перечитыванию (т. Е. По ссылке на разные строковые идентификаторы между моделями уровня 0 и уровня 2). Это вводит в заблуждение.
Тем не менее, они не все поддерживаются каждым браузером.
Mozilla сообщает следующее о входном событии:
Событие ввода DOM запускается синхронно при изменении значения элемента или. Кроме того, он запускает contenteditable редакторов, когда его содержимое изменяется.
change
только пожаров, когда поле потеряло фокус.input
загорается сразу.input
элементе и о том, как прикрепить к нему события.Ответы:
Это не совсем псевдоним,
keyup
потому чтоkeyup
сработает, даже если клавиша ничего не делает (например, нажатие, а затем отпускание клавиши управления вызоветkeyup
событие).Хороший способ думать об этом так: это событие, которое срабатывает при изменении входных данных. Это включает, но не ограничивается, нажатие клавиш, которые изменяют ввод (так, например,
Ctrl
само по себе это не вызовет событие, аCtrl-V
вставит некоторый текст), выбор опции автозаполнения, середина в стиле Linux -кликните вставку, перетаскивание и многое другое.Смотрите эту страницу и комментарии к этому ответу для более подробной информации.
источник
input
на самом деле это больше, чем просто отфильтрованныйkeyup
, например, он будет срабатывать также, когда значение было выбрано из списка ранее использованных значений ... Это было бы что-то, с чем было бы очень трудно справиться, если бы не былоinput
события.oninput
также срабатывает, когда текст изменяется мышью (либо с помощью перетаскивания, либо с помощью меню, вызываемого правой кнопкой мыши, либо с помощью щелчка средней кнопкой мыши для вставки).oninput
Событие очень полезно для отслеживания изменений полей ввода.Однако это не поддерживается в версии IE <9. Но более старые версии IE имеют свое собственное событие,
onpropertychange
которое делает то же самое, что иoninput
.Так что вы можете использовать это так:
Чтобы иметь полную поддержку кроссбраузера.
Так как изменение свойства может быть инициировано для ЛЮБОГО изменения свойства, например, измененное свойство изменено, то вы должны включить это:
источник
Используя jQuery, следующие идентичные в действительности:
С
input
событием в браузерах, которые я тестировал, работает только второй шаблон.Таким образом, вы ожидаете, что это сработает, но это НЕ (по крайней мере, в настоящее время):
Опять же, если вы хотите использовать делегирование событий (например, чтобы настроить событие на
#container
прежде, чем вашinput.text
будет добавлен в DOM), это должно прийти на ум:К сожалению, опять же, это не работает в настоящее время!
Работает только этот шаблон:
ИЗДАНО БОЛЬШЕ СОВРЕМЕННОЙ ИНФОРМАЦИИ
Я, конечно, могу подтвердить, что этот шаблон:
СЕЙЧАС работает и во всех «стандартных» браузерах.
источник
Как сказал Клаустрофоб, oninput поддерживается для IE9 +.
Тем не менее , «Событие oninput содержит ошибки в Internet Explorer 9. Оно не запускается, когда символы удаляются из текстового поля через пользовательский интерфейс только при вставке символов. Хотя событие onpropertychange поддерживается в Internet Explorer 9, но аналогично Событие oninput также содержит ошибки, оно не запускается при удалении.
Поскольку символы могут быть удалены несколькими способами (клавиши Backspace и Delete, клавиши CTRL + X, команда «Вырезать» и «Удалить» в контекстном меню), не существует хорошего решения для обнаружения всех изменений. Если символы удаляются с помощью команды «Удалить» контекстного меню, изменение не может быть обнаружено в JavaScript в Internet Explorer 9 ».
У меня хорошие результаты привязки как к вводу, так и к keyup (и к keydown, если вы хотите, чтобы он запускался в IE, удерживая нажатой клавишу Backspace).
источник
Будьте осторожны при использовании INPUT. Это событие происходит в фокусе и размытии в IE 11. Но оно вызывается при изменении в других браузерах.
https://connect.microsoft.com/IE/feedback/details/810538/ie-11-fires-input-event-on-focus
источник
Я думаю, что «input» здесь просто работает так же, как «oninput» в модели событий DOM Level O.
Кстати:
Как прокомментировал silkfire, я тоже погуглил «входное событие jQuery». Таким образом, меня привели сюда, и я был поражен, узнав, что input является приемлемым параметром для команды jquery bind () . В jQuery в действии (стр. 102, изд. 2008) «вход» не упоминается как возможное событие (против 20 других, от «размытия» до «выгрузки»). Это правда, что на с. 92, обратное можно предположить по перечитыванию (т. Е. По ссылке на разные строковые идентификаторы между моделями уровня 0 и уровня 2). Это вводит в заблуждение.
источник
jQuery имеет следующую подпись для
.on()
метода:.on( events [, selector ] [, data ], handler )
События могут быть любыми из перечисленных в этой ссылке:
https://developer.mozilla.org/en-US/docs/Web/Events
Тем не менее, они не все поддерживаются каждым браузером.
Mozilla сообщает следующее о входном событии:
источник
работает как в IE, так и в Chrome
источник
bind
устарела, используйтеon