【问题标题】:Does oninput work in Chrome for radio buttons?oninput 在 Chrome 中是否适用于单选按钮?
【发布时间】:2016-11-30 23:21:06
【问题描述】:

有人知道oninput 标签在 Chrome 中是否适用于单选按钮吗?这是我的代码:

<html>
<head><title>Weirdness</title></head>
<body>
    <input type="number" min="1" size="2" oninput="window.alert(this.value);">
    <input type="radio" name="myradio" value="A" oninput="window.alert(this.value);">
    <input type="radio" name="myradio" value="B" oninput="window.alert(this.value);">
</body>
</html>

当我在 Firefox 中运行它时,当我更改其中一个输入时,window.alert() 调用工作得非常好。但是当我在 Chrome 上运行它时,当我选择单选按钮时,单选按钮不会调用该函数。尽管我发现所有规范都说 Chrome 支持oninput。还是我做错了什么?

谢谢。

【问题讨论】:

  • 解决方法:对单选按钮使用 onchange
  • 感谢 Jaromanda——这正是我正在使用的解决方法。不过,这似乎是一个完整的 Chrome 错误——或者是一个非常奇怪的“功能”。
  • oninput”事件类似于“onkeypress”、“onkeyup”和“onkeydown”事件。

标签: javascript html google-chrome


【解决方案1】:

如有疑问,您可以随时查看the documentation

Feature        Chrome   Firefox (Gecko) Internet Explorer   Opera   Safari 
Basic support  (Yes)    2               9                   10      (Yes)

不过,根据Living Standard,事件是……

在用户更改值时触发控件(另请参阅更改 事件)

由于单击按钮或复选框或单选按钮实际上不会更改其值,因此从技术上讲,它可能不应该被触发或依赖于触发单选按钮。

我可以确认它在 Chrome 48 中不起作用。

【讨论】:

  • 但是,令人惊讶的是它在 Chrome 中不起作用,至少在 54.0.2840.98(64 位)版本中。
  • 这可能与规格有关 - 似乎 oninput 只适用于文本输入(数字、搜索、文本等)。那么可能是 Chrome 的实现稍微严格一些?
  • 您可能会争辩说是 firefox 有这个错误 - 不过,规范并没有将 input 事件限制为文本类型的输入控件 - 因此,规范不够明确,会导致这些不一致跨度>
  • 是的——似乎是这样。看起来我成为了一些非常具有误导性的文档的牺牲品...onchangeoninput 实际上有很大的不同:不仅在它们触发的时间,而且在它们触发的原因上。 (至少在 Chrome 中。)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-23
  • 1970-01-01
  • 2018-05-17
  • 2011-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多