Onclick javascript在Chrome中停止表单提交

Onclick javascript在Chrome中停止表单提交,javascript,forms,google-chrome,submit,Javascript,Forms,Google Chrome,Submit,我有以下表格: <form class="custom" method="post" action="/checkout/submit/"> ... <div class="row"> <div class="ten mobile-three columns" style="margin-top: 20px;"> <input id="previous-btn" style="margin-top: 10p

我有以下表格:

<form class="custom" method="post" action="/checkout/submit/">
...
    <div class="row">
        <div class="ten mobile-three columns" style="margin-top: 20px;">
            <input id="previous-btn" style="margin-top: 10px;" type="submit" class="button radius" name="previous" value="Zurück" />
            <input id="next-btn" style="margin-top:10px;" type="submit" class="button radius success" name="next" value="Bestätigen" onclick="disableButtons(this);"/>
            <input style="margin-top:10px;" type="hidden" name="next" value="Bestätigen" />
            &nbsp;&nbsp;<img id="ajax-img" style="display:none;" src="/img/ajax-loader.gif" />
        </div>
    </div>
</form>
...
<script type="text/javascript">
function disableButtons(elem)
{
    $('#previous-btn').prop('disabled', true);
    $('#next-btn').prop('disabled', true);
    $('#ajax-img').css('display','inline');
    return true;
}
</script>
</body>
</html>

...
...
功能禁用按钮(elem)
{
$(#上一个btn').prop('disabled',true);
$('next btn').prop('disabled',true);
$('#ajax img').css('display','inline');
返回true;
}
使用
onclick
I在提交表单时禁用按钮并显示ajax加载图片。这样用户就不会单击提交两次

问题是,在Chrome中,表单根本没有提交。所以onlclick函数工作得很好,但仅此而已。 在FF和IE中,一切都很好——一开始javascript对按钮进行更改,然后完成表单提交的正常流程

如果您有任何关于它为什么会在Chrome中损坏的想法,我将不胜感激。
谢谢

尽管从理论上讲,你的代码应该可以运行,但Chrome却不这么认为,正如本文和中所述(可能是一个bug,可能是预期的设计)

首先,当您想要允许/阻止单击时,您应该使用
onclick=“return someFunction()”
而不是
onclick=“someFunction()”
——然后只有当该函数返回true时,操作才会继续执行

现在,要完成这项工作,您必须从您的职能部门提交表格:

$(this).parents('form').submit()

您应该在表单的
onclick=“someFunctionToDoJob();submit();”
中使用类似的内容


在你的
someFunctionToDoJob()添加此
文档。此处指定YourForm.submit()

控制台中有错误吗?控制台中没有任何错误。它只是在javascript之后停止,因此按钮被禁用并显示ajax加载图像,但表单提交没有任何进展。我认为问题可能是您需要执行
onclick=“return disableButtons(this)”
,但修复该操作没有帮助。您可以手动执行
form.submit()
@Isaac,这似乎是一个解决方案,但我当前的代码有什么问题?这是一个Chrome bug还是我遗漏了一些简单的东西?我并没有像提供的链接那样改变提交函数的行为。我不重新定义提交。我只是为按钮添加onclick事件。在函数名之前添加了“return”——行为相同。在javascript中添加表单提交解决了上面评论中提到的问题,但仍然不清楚我的代码出了什么问题。您添加的第二个链接似乎是一个答案,因此在Chrome中禁用动态按钮不起作用。看起来像个虫子。好的,我会记住的。谢谢当我说“更改表单行为”时,我的意思是:当您重定向onclick时,您为该操作提供了另一条路径。看起来Chrome和其他浏览器对此的解释不同,对于Chrome来说,禁用调用该操作的同一控件意味着禁用其操作。这可能是Chrome/webkit中的一个bug,但由于这个“bug”太老了,所以现在就可以假设它可能是webkit的设计人员想要的。谁知道呢,好的,谢谢。我已经接受了你的回答,因为你给了一个指向小组讨论的链接,很明显,我使用它的方式是无效的。好家伙,这对我的问题有帮助。只需添加
submit()
将我的其余代码放入
onclick
-属性,为我修复了它。这是我通过阅读找到的最简单的方法。没有jQuery,没有通过id获取东西。可能不可扩展,但对于noob来说确实可读。