2

这与如何确定 HTML 表单上的默认提交按钮有关?

在我的网络应用程序的设计中,用户应该能够通过在文本输入中按 enter 直接提交表单,在这种情况下,不应提交该表单中的任何按钮,因为它们具有其他功能。为了避免默认按钮问题,我处理了keydown事件并以编程方式提交了表单。

当我在Firefox中对此进行测试时,似乎在输入键上按下了表单中的第一个按钮。简单的解决方案是在keydown事件处理程序中禁用该按钮。

然而, Chrome似乎“智能地”选择第一个非禁用按钮作为默认按钮,并且即使该按钮将被keydown处理程序立即禁用,也会使用该按钮提交。

可以使用这个jsFiddle来测试效果。在 Firefox 中,在复选框禁用“第一个”按钮后,在输入中输入 press 只会导致一次提交。在 Chrome 中,总是有两个提交,一个来自 keydown,另一个来自按钮按下,即使两个按钮都被禁用!

这迫使我更改代码中的所有 keydown 处理程序以返回 false 或处理所有按钮单击并检查按钮是否被禁用。两者似乎都不是好的代码。

有更好的建议吗?

4

1 回答 1

0

也许你可以把它挂在模糊上。尝试这个:

<input type="text" ... onblur="submit();" />
于 2012-06-07T23:38:40.910 回答