带两个提交按钮的表单
问题描述:
我有一个带有两个提交按钮的表单,如下所示。带两个提交按钮的表单
<form id="choice" name='form' method="POST" action="/">
<button type="submit" name="vote" id="btnMinus" value="1"></button>
<button type="submit" name="vote" id="btnPlus" value="2"></button>
</form>
我有这段代码为了防止表单没有提交两次。但是,它提供了“错误的请求”错误。似乎它不发送“投票”价值。有任何想法吗?
$('#choice').submit(function(e)
{
e.preventDefault();
$('#btnPlus').attr('disabled',true);
$('#btnMinus').attr('disabled',true);
this.submit();
});
答
继@ RoryMcCrossan的评论,你可以使用一个隐藏的输入,并设置它的价值一旦按钮被点击:
$('#choice button').click(function(e) {
e.preventDefault();
$('#vote-el').val($(this).val());
$('#btnMinus').prop('disabled',true);
$('#btnPlus').prop('disabled',true);
$('#choice').submit();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form id="choice" name='form' method="POST" action="/">
<input id="vote-el" type="hidden" name="vote" value="" />
<button type="submit" name="vote" id="btnMinus" value="1">1</button>
<button type="submit" name="vote" id="btnPlus" value="2">2</button>
</form>
它不会发送任何东西,因为价值当按钮触发提交时,该按钮仅包含在请求中。您将取消原始按钮启动的事件并提交新的提交,而不需要按钮上下文。 –
可能只是一个错字,但你有'$('#btnPlus')'两次。你应该使用'.prop()'而不是'.attr()' – j08691
@RoryMcCrossan任何建议来禁用按钮呢? – Arturo