Verhindert versehentliches Doppelklicken auf eine Schaltfläche

7

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.

    
juan 08.09.2008, 19:01
quelle

7 Antworten

13

Siehe dieses Beispiel zum Deaktivieren der Steuerung beim Postback. Es sollte dir helfen, das zu tun, was du erreichen willst.

Ссылка

    
Ryan Lanciaux 08.09.2008, 19:06
quelle
2

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.

    
Joel Coehoorn 08.09.2008 19:11
quelle
2

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.

    
Andreas Krohn 13.07.2012 08:20
quelle
1

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.

    
Jason Bunting 08.09.2008 19:05
quelle
1

Anstatt mich zu verstecken, tausche ich Buttons mit Javascript. Zeigen Sie ein anderes ausgegrautes Bild beim Klicken auf die erste Schaltfläche.

    
Gulzar Nazim 08.09.2008 19:11
quelle
1

Setzen Sie die Button-Eigenschaft UseSubmitBehavior auf false. Erstellen Sie dann eine OnClientClick-Funktion, die die Schaltfläche deaktiviert. Es würde ungefähr so ​​aussehen:

%Vor%

am schnellsten günstigsten Weg:

%Vor%     
latuya23 14.08.2014 15:52
quelle
0

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.

    
user3723972 11.07.2016 22:49
quelle

Tags und Links