4

我有点惊讶地发现 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/

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

4

1 回答 1

3

W3C 4.01 规范Intrinsic events 部分简要提到了它:

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

MSDN上也更广泛地提到了它:

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

最后,在MDN上:

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

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

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

于 2013-06-26T20:15:05.030 回答