在Webkit/Chrome中检测HTML5数字控件更改的事件?

5
HTML5给我们带来了一些新的输入元素,例如。在Chrome中,这将呈现为一个文本框,内部有两个循环按钮,用于增加和减少框内的数值。
对于一个个人爱好项目,我正在使用这个控件。然而,我遇到了一个问题:
有没有办法使用javascript事件检测值的变化?我本来期望onChange事件会触发,但是没有这样的运气。另外,当点击循环按钮时,onClick只有在文本框内容被点击时才会触发。
有什么想法吗?(除了:嘿,这是HTML5表单,不要期望任何东西能够正常工作!)
编辑:正如mikerobi在下面指出的,当元素失去焦点时,onChange事件确实会触发。尽管如此,这还不是我想要的,所以欢迎其他评论和建议!
3个回答

6

错误报告的结果:不会修复,因为在按下那些按钮时会触发input事件。这是HTML5规范的一部分。所以问题得到解决,感谢mikerobi提出的建议报告。


1
这在Safari中对你有效吗?我正在使用Safari 5.0.3(mac),只有在我更改文本框中的数字时才会触发输入事件,而不是当我点击那些按钮时。 - expora
Safari v5.0.4即使在失焦输入框时也不会触发“change”事件,而且在单击微调器时也不会触发“input”事件。这似乎是一个与<input type="number">有关的Safari bug。 - Phrogz
请注意,最新的WebKit夜间构建中行为是正确的,所以最终这个修复程序应该会进入Safari。 - Phrogz

2
$.click()正常工作。如果你点击并按住,它不会生效,直到你松开。

2

onChange事件会在文本框失去焦点时触发,但您可能已经知道这一点。

HTML5规定数字输入应该是文本框或微调控件,但规范似乎没有任何关于微调控件应该如何显示或运作的指导方针,而是将这些决策留给浏览器供应商。

在Mac Safari中,微调按钮会响应单击事件,您可能需要提交一个Chrome错误报告,我怀疑这只是一个疏忽。


嗨Mikerobi - 是的,我应该已经发现了失焦时更改的问题..谢谢你提到它。我会去提交那个bug报告,谢谢! - kander
你使用的是哪个Safari版本?我的(Windows上的5.0.2)根本不支持数字类型,并将其呈现为普通文本框:/ - kander

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接