我的表单有两个提交按钮。我点击后使用以下代码禁用提交按钮;但是,当它提交表单时,它总是触发第一个提交按钮(即使我点击了第二个提交按钮)。我想触发第二个提交按钮。
<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>
答案 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选择器什么也找不到)