2016-05-06 3 views
0

Mein Formular enthält zwei Schaltflächen senden. Ich verwende den folgenden Code, um die Übermittlungsschaltflächen nach dem Klicken zu deaktivieren; Wenn das Formular jedoch gesendet wird, löst es immer die erste Übergabeschaltfläche aus (auch wenn ich auf die zweite Übergabeschaltfläche geklickt habe). Ich möchte den zweiten Submit Button auslösen.Deaktivieren der Schaltfläche zum Senden einzelner Nachrichten in einem Formular mit mehreren Übergabeschaltflächen

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

Ohne die Struktur Ihres HTML zu wissen, alles, was ich sagen kann, ist, Verwenden Sie denselben Selektor, um beide Eingabeknöpfe zu erhalten und sie auf diese Weise zu deaktivieren. – Ivan

+0

Nun, wenn es zwei Submit-Buttons innerhalb desselben Formulars gibt, dann erklärt das alles. – Hozikimaru

+0

Warum verwenden Sie zwei Senden-Schaltflächen? Sollen sie sich anders einreichen? – nurdyguy

Antwort

1

Ihr Problem hier ist, dass man in eine Race-Bedingung ausgeführt wird, und ich werde erklären: Sie möchten die Taste deaktivieren, aber das Formular für die Einreichung Sie so auch das Deaktivieren der Option zu tun (mit diese Schaltfläche), so ist Ihre Lösung, die Einreichung selbst zu behandeln (durch Aufruf der submit() Funktion aus dem JS-Code).
Das Problem, das Sie hier haben, ist, dass wenn Sie die submit() Funktion (von js) aufrufen, Sie nicht den Wert der Schaltfläche erhalten, die geklickt wurde.

Ein weiteres Problem, das Sie hier haben, ist die Tatsache, dass Ihre Tasten keine Namen haben, also egal was - Sie werden ihre Werte nicht auf Ihrem Server bekommen.

Wie auch immer - Sie haben 2 Möglichkeiten hier.
Die erste - haben Sie ein verstecktes Feld, und wenn der Benutzer auf die Schaltfläche klickt - setzen Sie den Wert dieses Feldes auf den Wert der Schaltfläche, die angeklickt wurde, und senden Sie das Formular. Sie erhalten die Daten auf dem Server.

Die zweite Option besteht darin, die Schaltfläche als deaktiviert zu setzen, nachdem Sie sichergestellt haben, dass das Formular abgeschickt wurde. Hier ein Beispiel:

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

(Beachten Sie auch, ich Ihre js Code direkt nach dem html bewegt, sonst wird Ihre jQuery-Selektor nichts finden)

Verwandte Themen