【发布时间】:2012-06-12 01:36:01
【问题描述】:
这与How is the default submit button on an HTML form determined?有关
在我的网络应用程序设计中,用户应该能够通过在文本输入中按 Enter 键直接提交表单,在这种情况下,该表单中的任何按钮都不应提交,因为它们具有其他功能。为了避免默认按钮问题,我处理了keydown 事件并以编程方式提交了表单。
当我在 Firefox 中对此进行测试时,似乎表单中的第一个按钮被按下了 enter 键。简单的解决方案是在 keydown 事件处理程序中禁用该按钮。
Chrome 似乎会“智能”选择第一个未禁用的按钮作为默认按钮,并且会使用该按钮提交,即使该按钮将立即被 keydown 处理程序禁用.
可以使用这个jsFiddle来测试效果。在 Firefox 中,在复选框禁用“第一个”按钮后,在输入中输入 press 只会导致一次提交。在 Chrome 中,总是有两个提交,一个来自 keydown,另一个来自按钮按下,即使两个按钮都被禁用!
这迫使我要么更改代码中的所有 keydown 处理程序以返回 false,要么处理所有按钮点击并检查按钮是否被禁用。两者似乎都不是好的代码。
有更好的建议吗?
【问题讨论】:
标签: html google-chrome