onChange 事件在哪个权威规范中进行了详尽的定义?

mat*_*teo 5 html events standards dom onchange

我有点惊讶地发现,html 文档中的 onChange 事件在文本输入或文本区域上触发,而不是在其值实际更改时触发,而是仅在焦点离开元素时触发(当然,如果其值已更改) )。

所以我一直在寻找说明这一点的规范,但找不到。我可以找到数以百万计的教程来解释这一点,包括 W3Schools 的教程,但我找不到定义事件预计何时触发的标准。

在 HTML5 规范本身中,列出了事件的名称,但没有提及: http ://www.w3.org/html/wg/drafts/html/master/

在另一个规范“DOM level 3 事件规范”中,甚至没有提及: http: //www.w3.org/TR/DOM-Level-3-Events/

那么定义它的标准是什么?

dsg*_*fin 3

W3C 4.01 规范内在事件部分简要提到了这一点:

onchange当控件失去输入焦点并且自获得焦点后其值已被修改时,就会发生该事件”。

MSDN上也更广泛地提到了这一点:

“此事件在提交内容时触发,而不是在值更改时触发。例如,在文本框中,当用户键入时不会触发此事件,而是当用户通过离开文本框提交更改时触发此事件具有焦点。此外,onblur当控件也失去焦点时,此事件会在指定的代码之前执行。”

最后,在MDN上:

根据要更改的表单元素的类型以及用户与元素交互的方式,更改事件会在不同的时刻触发:

  • 当元素被激活(通过单击或使用键盘)<input type="radio"><input type="checkbox">;
  • 当用户显式提交更改时(例如,通过<select>单击鼠标从 a 的下拉列表中选择一个值、从 的日期选择器中选择日期<input type="date">、在 的文件选择器中选择文件<input type="file">等);
  • 当元素在更改其值但未提交后失去焦点时(例如,在编辑<textarea>或 的值之后<input type="text">)。

另一个潜在有用的链接 - WhatWg - 规范 - 更改事件。