asp.net - Was ist der beste Ansatz für die(clientseitige) Deaktivierung einer Submit-Schaltfläche?




javascript jquery (5)

Einzelheiten:

  • Nur deaktivieren, nachdem der Benutzer auf die Schaltfläche zum Senden geklickt hat, jedoch vor dem Zurückgeben auf den Server
  • ASP.NET-Webformulare (.NET 1.1)
  • Bevorzuge jQuery (falls überhaupt eine Bibliothek)
  • Muss aktiviert werden, wenn das Formular neu geladen wird (dh die Kreditkarte ist ausgefallen)

Das ist keine Notwendigkeit, dass ich das tue, aber wenn es einen einfachen Weg gibt, es zu tun, ohne zu viel ändern zu müssen, werde ich es tun. (dh wenn es keine einfache Lösung gibt, werde ich es wahrscheinlich nicht machen, also mach dir keine Sorgen, zu tief zu graben)

https://code.i-harness.com


Beachten Sie, dass Sie die Schaltfläche nicht deaktivieren sollten, bevor das Formular gesendet wird. Wenn Sie die Schaltfläche deaktivieren, die Javascript in dem OnClick-Ereignis verwendet, können Sie das Formularsenden verlieren.

Daher würde ich vorschlagen, dass Sie die Schaltfläche mit Javascript ausblenden, indem Sie ein Bild darüber platzieren oder die Schaltfläche aus dem sichtbaren Bereich heraus bewegen. Das sollte es dem Formular ermöglichen, normal weiterzugehen.


Es gibt drei Möglichkeiten, ein Formular einzureichen, das abgedeckt werden sollte. Benutze die Vorschläge von David McLaughlin und Jimmy. Einer wird das Formularelement für den Absenden-Button deaktivieren, während der andere das Absenden des einfachen HTML-Formulars deaktiviert.

Für das dritte wird Javascript nicht von einem form.submit () abschalten. Die OnSubmit="return false" -Methode gilt nur, wenn ein Benutzer auf die Schaltfläche OnSubmit="return false" klickt oder in einem Eingabeformularelement die Eingabetaste drückt. Client Side Scripting muss ebenfalls behandelt werden.


Ich vermute, dass Sie nicht mehr als einmal auf die Schaltfläche "Senden" klicken, während die Übergabe ausgeführt wird.

Mein Ansatz bestand darin, die Schaltfläche nur ganz zu verbergen und stattdessen eine Art Statusanzeige (animiertes GIF usw.) anzuzeigen.

Hier ist ein sehr gekünsteltes Beispiel (es ist technisch im Prototyp, aber ich denke, eine Jquery-Version wäre sehr ähnlich):

<html>
    <head>
        <script type="text/javascript" src="include/js/prototype.js"></script>

        <script type="text/javascript">
            function handleSubmit()
            {
                $('submit').hide();
                $('progressWheel').show();
                return true;
            }
        </script>
    </head>
    <body>
        <img src="include/images/progress-wheel_lg.gif" id="progressWheel" style="display:none;"/>
        <input type="submit" name="submit" id="submit" value="Submit" onclick="handleSubmit();"/>
    </body>
</html>

Sie könnten so etwas tun:

$('form').submit(function() {
    $(this)
        .find(":submit,:image")             // get all the submit buttons
        .attr({ disabled : 'disabled' })    // disable them
        .end()                              // go back to this form
        .submit(function() {                // change the onsubmit to always reject.
            return false;
        })
    ;
});

Vorteile davon:

  • Es wird mit allen Formularen arbeiten, mit allen Methoden der Einreichung:
    • Klicken auf ein Sendeelement
    • Drücken Sie die Eingabetaste oder
    • Aufruf von form.submit() von einem anderen Code
  • Es werden alle Sendeelemente deaktiviert:
    • <input type="submit"/>
    • <button type="submit"></button>
    • <input type="image" />
  • Es ist wirklich kurz.

in JQuery:

$('#SubmitButtonID').click(function() { this.disabled = true; });




.net-1.1