`input`元素的“change”和“input”事件之间的区别
有人能告诉我change
和input
事件之间的区别是什么?
我正在使用jQuery添加它们:
$('input[type="text"]').on('change', function() { alert($(this).val()); })
它也适用于input
而不是change
。
也许在相关焦点的事件排序方面存在一些差异?
根据这篇文章 :
-
当通过用户界面更改元素的文本内容时,会发生
oninput
事件。 -
当选择,检查状态或元素的内容发生变化时,会发生
onchange
。 在某些情况下,它仅在元素失去焦点时发生。 onchange属性可以与:,
和
。
TL; DR:
-
oninput
:文本内容中的任何更改 -
onchange
:- 如果是
:更改+失去焦点
- 如果是
:更改选项
- 如果是
$("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); });
-
当内容发生更改且元素失去
focus
,change
event
在大多数浏览器中触发,基本上是更改的集合。 与input
event
不同,您不会看到每次更改都会触发此操作。 -
input
event
在元素内容更改时同步触发。 所以你会看到这个事件更频繁地发生。 浏览器支持各不相