我有点惊讶地发现html文档中的onChange事件是在文本输入或textarea上触发的,而不是在其值实际发生变化的时刻,而是仅在焦点离开元素时(如果其值已更改) ,当然)。
所以我一直在寻找说明这一点的规范,而我却找不到它。我可以找到数以百万计的教程来解释这些,包括W3Schools的教程,但我找不到定义事件何时被解雇的标准。
在HTML5规范本身中,列出了事件的名称,但没有任何说明: http://www.w3.org/html/wg/drafts/html/master/
在另一个规范“DOM 3级事件规范”中,甚至没有提到: http://www.w3.org/TR/DOM-Level-3-Events/
那么定义它的标准是什么?
答案 0 :(得分:3)
在W3C 4.01 specification的 内在事件部分 中简要提及:
“当控件丢失输入焦点及其时,会发生
onchange
事件 自获得焦点以来,价值已被修改“。
在MSDN上也提到了更广泛的内容:
“提交内容时会触发此事件,而不是 价值在变化。例如,在文本框中,不会触发此事件 当用户正在键入时,而是在用户提交更改时 通过离开具有焦点的文本框。 此外,当控件也在
onblur
指定的代码之前执行此事件 失去了焦点。“
最后,在MDN:
取决于要更改的表单元素的类型和方式 用户与元素交互,更改事件在a处触发 不同时刻:
- 激活元素(通过点击或使用键盘)
<input type="radio">
和<input type="checkbox">;
- 当用户明确提交更改时(例如,通过鼠标单击从
<select>
的下拉列表中选择一个值,通过从<input type="date">
的日期选择器中选择日期,通过选择文件 在<input type="file">
等文件选择器中;- 如果元素在其值更改后失去焦点但未提交(例如,在编辑
<textarea>
或<input type="text">
的值之后)。
另一个可能有用的链接 - WhatWg - specification - change event.