在具有多个提交按钮的表单中禁用单个提交按钮

时间:2016-05-06 18:47:44

标签: jquery

我的表单有两个提交按钮。我点击后使用以下代码禁用提交按钮;但是,当它提交表单时,它总是触发第一个提交按钮(即使我点击了第二个提交按钮)。我想触发第二个提交按钮。

<script>
$('input[type=submit]').click(function() {
    $(this).attr('disabled', 'disabled');

    //This line submits the form as if the first button was clicked
    $(this).parents('form').submit();
});
</script>

<form method="post">
    <!-- other form elements here -->
    <input type="submit" value="button1">
    <input type="submit" value="button2">
</form>

1 个答案:

答案 0 :(得分:1)

你的问题是你遇到了竞争状态,我会解释: 您希望禁用该按钮,但这样做也会禁用提交表单的选项(使用该按钮),因此您的解决方案是自己处理提交(通过从JS代码调用submit()函数)。
你在这里遇到的问题是,当你调用submit()函数(来自js)时,你没有得到被点击的按钮的值。

你在这里遇到的另一个问题是你的按钮没有名字,所以无论如何 - 你都不会在服务器上获得它们的价值。

无论如何 - 你有两个选择。
第一个 - 具有隐藏字段,当用户单击按钮时 - 将该字段的值设置为单击的按钮的值,然后提交表单。您将在服务器上收到数据。

第二个选项是在确保提交表单后立即将按钮设置为禁用。 这是一个例子:

<form method="post">
    <!-- other form elements here -->
    <input type="submit" name="a" value="button1">
    <input type="submit" name="a" value="button2">
</form>
<script>
$('input[type=submit]').click(function() {
    var clickedBtn = $(this)
    setTimeout(function() {
        clickedBtn.attr('disabled', 'disabled');
    }, 1);
});
</script>

(另请注意我在你的html之后移动你的js代码,否则你的jquery选择器什么也找不到)