2016-11-29 163 views
0

我有一个带有两个提交按钮的表单,如下所示。带两个提交按钮的表单

<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(); 
}); 
+3

它不会发送任何东西,因为价值当按钮触发提交时,该按钮仅包含在请求中。您将取消原始按钮启动的事件并提交新的提交,而不需要按钮上下文。 –

+2

可能只是一个错字,但你有'$('#btnPlus')'两次。你应该使用'.prop()'而不是'.attr()' – j08691

+0

@RoryMcCrossan任何建议来禁用按钮呢? – Arturo

回答

1

继@ 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>