2016-11-29 161 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>