【问题标题】:In what authorative specification is the onChange event exhaustively defined?在哪个权威规范中详尽地定义了 onChange 事件?
【发布时间】:2013-06-24 03:39:54
【问题描述】:

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

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

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

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

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

【问题讨论】:

标签: html events dom standards onchange


【解决方案1】:

W3C 4.01 specification内在事件部分中简要提及:

"onchange 事件发生在控件失去输入焦点及其 获得焦点后,值已被修改”。

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

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

最后,在MDN

取决于被改变的表单元素的种类和方式 用户与元素交互时,更改事件在 不同的时刻:

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

另一个可能有用的链接 - WhatWg - specification - change event.

【讨论】:

  • 谢谢。 WhatWg 似乎是最接近目前存在的标准的东西。 (不过,这非常令人费解)。我几乎错过了 :) (我要评论我发现它链接自 MDN 之一)。有趣的是,W3C 决定完全放弃 HTML5 中的一项规范,这在 HTML4 中非常清楚,尽管不完整且部分不真实(或不再真实:其中声明不适用于复选框和收音机),而不是完成和改进它。
猜你喜欢
  • 2016-08-21
  • 2019-10-01
  • 2016-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多