2016-11-29 2 views
0

Ich habe ein Formular mit zwei Senden-Schaltflächen wie unten.Formular mit zwei Senden-Schaltflächen

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

Ich habe diesen Code, um zu verhindern, dass das Formular nicht zweimal vorgelegt. Es gibt jedoch einen "fehlerhaften" Fehler. Scheint, dass es den Wert "vote" nicht sendet. Irgendwelche Ideen?

$('#choice').submit(function(e) 
{ 
    e.preventDefault(); 
    $('#btnPlus').attr('disabled',true); 
    $('#btnMinus').attr('disabled',true); 
    this.submit(); 
}); 
+3

Es wird nichts, weil der Wert von schicken Die Schaltfläche ist nur in der Anfrage enthalten, wenn die Schaltfläche das Senden auslöst. Sie brechen das ursprüngliche buttoninitiierte Ereignis ab und erstellen ein neues Senden ohne den Kontext der Schaltfläche. –

+2

Wahrscheinlich nur ein Tippfehler, aber Sie haben '$ ('# btnPlus') zweimal. Und Sie sollten '.prop()' anstelle von '.attr()' – j08691

+0

@RoryMcCrossan irgendwelche Vorschläge verwenden, um die Tasten dann zu deaktivieren? – Arturo

Antwort

1

Nach @ RoryMcCrossan Kommentar können Sie einen versteckten Eingang verwenden und es Wert ist, wenn die Schaltfläche geklickt wird:

$('#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>

Verwandte Themen