Onclick javascript停止在Chrome中提交表单

时间:2013-05-31 22:46:52

标签: 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: 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>

使用onclick我在表单提交时禁用按钮并显示ajax-loading图片。这样用户就不会再点击两次提交。

问题是在Chrome中,表单根本没有提交。所以onlclick函数工作正常,但就是这样。 在FF和IE中,一切正常 - 在开始时,javascript对按钮进行了更改,然后正常的表单提交流程完成。

不胜感激为什么它会在Chrome中出现故障。 谢谢!

2 个答案:

答案 0 :(得分:5)

虽然从理论上讲,你的代码应该可行,但Chrome认为不是这样,如similar SO questionthis chrome groups discussion中所述(可能是错误,可能是预期的设计)。

首先,当你想允许/阻止点击时,你应该使用onclick="return someFunction()"而不是onclick="someFunction()" - 那么只有当该函数返回true时,操作才会继续。

现在要完成这项工作,您必须从您的函数提交表单:

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

答案 1 :(得分:2)

你应该在你的onclick =“someFunctionToDoJob(); submit();”中使用这样的东西在你的表格上。 在你的someFunctionToDoJob();添加此document.hereNameYourForm.submit();