jquery - 'preventing default button on form from firing'问题有好的解决方案吗?

标签 jquery form-submit forms defaultbutton

我需要一个解决方案来解决“默认按钮”意外触发的老问题。 即,您在文本框中按 Enter 键,但表单上有一个提交按钮,但该按钮不是您想要触发的按钮(或者您可能根本不希望触发该表单)。

我想知道以下“解决方案”。有点老套,但据我所知应该是可靠的。

在表单内,第一件事是一个不可见的按钮。然后一些 jquery 立即禁用它。如果您在表单上按 Enter 键,则此按钮将被视为“默认按钮”并被触发,但由于“return false”事件处理程序而不会执行任何操作。

我之前见过的解决方案依赖于诸如 keydown 事件处理程序之类的东西,或者其他看似复杂/难以在每个浏览器中测试的东西。

我的解决方案(我以前没有见过,但可能不是唯一的)看起来简单得多,而且我认为非常可靠。您甚至可以判断 JavaScript 是否被禁用以及是否有人按 Enter 键,因为服务器将在表单数据中接收此按钮。

<form action="/store/checkout" method="post">

    <input id="btnFakeSubmit" name="FakeSubmit" src="/images/pixel.gif"
     style="width:1px; height:1px; position:absolute;" type="image" /> 

        <script> 
            $('#btnFakeSubmit').click(function() {
                return false;
            });
        </script> 

有关此解决方案的任何建议 - 包括在所有浏览器中隐藏按钮的最佳方法。

最佳答案

你可以做的一件事是:

  • 将提交操作设置为 javascript: return false;
  • 不要创建提交按钮
  • 创建另一个执行发送的按钮;它调用一个函数,将表单上的操作更改为真实地址,然后调用表单对象上的 submit()

例如像这样的东西:

<form id="myform" action="javascript: return false">
....
<input type="button" onclick="submit_myform">
...

function submit_myform()
{
   jQuery("#myform").attr("action", "post.php").submit(); //untested
}

这样,除了明确点击此按钮之外,没有其他方法可以提交表单。

关于jquery - 'preventing default button on form from firing'问题有好的解决方案吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1692152/

相关文章:

jquery - 仅当条款和条件 checkout 时才提交 Stripe 自定义表单

jquery - 阻止用户通过按 Enter 键提交表单

php - 使用 GET 的 HTML 表单多选

jquery - 如何用jquery改变 body 的背景图片

javascript - AJAX JQUERY 变量

从浏览器快捷方式提交表单的 Javascript 函数

javascript - 单击提交按钮时,php session 不适用于表单

jquery - 如何正确发送带有文本和文件输入字段的表单数据?

jquery - 这个 jQuery 下拉脚本可以简化吗?

javascript - 显示某些字段时表单不会提交