В чем разница между событием" change "и" input " для элемента ввода
может кто-нибудь сказать мне, что разница между change и input событий?
я использую jQuery для добавления их:
$('input[type="text"]').on('change', function() {
alert($(this).val());
})
Он работает с input вместо change.
может быть, какая-то разница в заказе событий относительно фокуса?
2 ответов:
по данным этот пост:
oninputсобытие происходит, когда текстовое содержимое элемента изменилось через пользовательский интерфейс.
onchangeпроисходит, когда выбор, проверенное состояние или содержимое элемента изменил. В некоторых случаях это происходит только тогда, когда элемент теряет фокус. Атрибут onchange может использоваться с:<input>,<select>и<textarea>.TL; DR:
oninput: любые изменения, внесенные в текстonchange:
- если это
<input />: изменить + потерять фокус- если это
<select>: изменить параметр$("input, select").on("input", function () { $("pre").prepend("\nOn input. | " + this.tagName); }).on("change", function () { $("pre").prepend("\nOn change | " + this.tagName); }).on("focus", function () { $("pre").prepend("\nOn focus | " + this.tagName); }).on("blur", function () { $("pre").prepend("\nOn blur | " + this.tagName); });<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <input type="text" /> <select> <option>Alice</option> <option>Bob</option> <option>Carol</option> <option>Dave</option> <option>Emma</option> </select> <pre></pre>
The
changeeventсрабатывает в большинстве браузеров при изменении содержимого и элемент теряетfocus, в основном совокупность изменений. Вы не увидите, что это уволено для каждого измененного в отличие отinputevent.The
inputeventсрабатывает синхронно при изменении содержимого для элемент. Таким образом, вы увидите, что это событие происходит чаще. Поддержка браузера варьируется.
Comments