【问题标题】:Disabling the default form submit button in Chrome禁用 Chrome 中的默认表单提交按钮
【发布时间】: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


    【解决方案1】:

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

    <input type="text" ... onblur="submit();" />
    

    【讨论】:

    • 刚试过这个,不幸的是它没有用。输入永远不会模糊,即即使表单提交事件来自按钮,光标仍停留在输入中。正如我上面所说,即使在按下回车键之前所有按钮都已禁用,也会使用一些按钮来提交表单。
    猜你喜欢
    • 1970-01-01
    • 2021-01-10
    • 2016-04-03
    • 1970-01-01
    • 2018-06-30
    • 1970-01-01
    • 1970-01-01
    • 2018-10-12
    相关资源
    最近更新 更多