Ich habe einige Steuerelemente, die von ASP.NET-Schaltflächen erben und 'onserverclick' verwenden.
Wenn der Benutzer zweimal klickt, werden auf der Schaltfläche zwei serverseitige Ereignisse ausgelöst. Wie kann ich das verhindern?
Ich habe versucht, "this.disabled = 'true'" nach dem Klick (im Attribut 'onclick') über Javascript zu setzen, aber das blockiert auch das erste Postback.
Siehe dieses Beispiel zum Deaktivieren der Steuerung beim Postback. Es sollte dir helfen, das zu tun, was du erreichen willst.
Sie möchten die Schaltfläche beim Postback nicht unbedingt deaktivieren. Sie möchten sicherstellen, dass sie nicht versehentlich zweimal senden. Das Deaktivieren oder Verbergen der Schaltfläche als Folge einer serverseitigen Aktion ist also bereits zu spät im Spiel. Zu diesem Zeitpunkt ist die 2. Anfrage bereits auf dem Weg. Sie müssen es entweder mit Javascript tun oder sicherstellen, dass Ihr serverseitiger Code nicht zweimal ausgeführt wird.
Im Falle eines Updatepanels und eines Buttons innerhalb einer FormView-Vorlage verwende ich den folgenden Ansatz:
%Vor%Dies bricht ein folgendes Postback ab, wenn derzeit noch ein asynchrones Postback aktiv ist. Funktioniert perfekt.
Jemand anders hat das vor ein paar Tagen hier irgendwo gesagt, und ich stimme zu - benutze Javascript um den -Button einfach zu verstecken, anstatt ihn zu deaktivieren; Sie können stattdessen ein "Spinner" -Bild anzeigen, wodurch der Benutzer wissen kann, was vor sich geht.
Anstatt mich zu verstecken, tausche ich Buttons mit Javascript. Zeigen Sie ein anderes ausgegrautes Bild beim Klicken auf die erste Schaltfläche.
Sie können auch versuchen, zum Beispiel btnSave.Enable = false; wenn die Schaltfläche gedrückt wird und bevor die Verarbeitung für die Schaltfläche in der Click-Event-Routine erfolgt. Wenn Sie es zurücksetzen müssen, damit es aktiviert werden kann, haben Sie eine separate Schaltfläche, die die Schaltfläche zur Wiederverwendung zurücksetzt.
Eine andere Methode besteht darin, die Schaltfläche mit Verifizierung zu setzen, so dass der Benutzer gefragt wird, ob er speichern möchte, er sollte beide Male erscheinen.
Noch eine andere Methode wäre, das erste Vorkommen zu markieren und dann ein Popup für das zweite zu setzen, um eine zweite oder nachfolgende Benutzung zu verifizieren.
Tags und Links javascript asp.net button