So deaktivieren Sie eine Schaltfläche nach dem ersten Klick

7

Ich habe das folgende Onclick-Ereignis für eine Schaltfläche. Sobald dieses Ereignis ausgelöst wurde, möchte ich die Schaltfläche deaktivieren. Kann mir jemand helfen zu verstehen, wie es geht?

Hier ist der Code, den ich beim buttonclick -Ereignis ausführe.

%Vor%

Hier ist die Schaltfläche, die ich deaktivieren möchte.

%Vor%     
Ishan 12.12.2011, 11:00
quelle

8 Antworten

12

Hast du es versucht?:

%Vor%     
Reniuz 12.12.2011, 11:02
quelle
28

Verwenden Sie die Eigenschaften OnClientClick und UseSubmitBehavior des Schaltflächensteuerelements.

%Vor%

Mit OnClientClick können Sie ein clientseitiges OnClick-Skript hinzufügen. In diesem Fall deaktiviert JavaScript das Schaltflächenelement und ändert seinen Textwert in eine Fortschrittsnachricht. Wenn das Postback abgeschlossen ist, wird die Schaltfläche auf der neu gerenderten Seite ohne weitere Arbeit in den Ausgangszustand zurückgesetzt.

Der einzige Fehler, der beim Deaktivieren einer Übermittlungsschaltfläche auf der Clientseite auftritt, besteht darin, dass die Submit-Funktion des Browsers und damit das Postback aufgehoben wird. Wenn Sie die UseSubmitBehavior-Eigenschaft auf "false" setzen, wird .NET angewiesen, das erforderliche Clientskript zu injizieren, um das Postback trotzdem auszulösen, anstatt sich auf das Formularübertragungsverhalten des Browsers zu verlassen. In diesem Fall wäre der eingegebene Code:

%Vor%

Redered HTML:

%Vor%

Dies sollte Ihnen das gewünschte Verhalten geben.

Von: Ссылка Kredit: Dave Ward (Twitter: @Encosia)

    
Prafulla 12.12.2011 11:09
quelle
5

Sie müssen die Enabled-Eigenschaft der Schaltfläche im serverseitigen Code festlegen, wie von anderen Postern beschrieben. Wenn Sie jedoch mehrere Submits von derselben Schaltfläche verhindern möchten, benötigen Sie eine etwas andere Ausrichtung.

Fügen Sie Ihrer Klasse eine Methode hinzu:

%Vor%

In Page_Load add

%Vor%     
Dave 12.12.2011 11:11
quelle
4
%Vor%     
Iman Abidi 12.12.2011 11:07
quelle
2

Siehe markierten Code

%Vor%     
Shai 12.12.2011 11:02
quelle
2
%Vor%

rufen Sie dieses onClientKlick der Schaltfläche

auf     
Neha 12.12.2011 11:11
quelle
1

Wenn Sie jquery als

verwenden möchten %Vor%     
Pranay Rana 12.12.2011 11:04
quelle
0

Das ist ein alter Post, aber ich glaube nicht, dass er vollständig beantwortet wurde.

Zuerst senden Sie in ASP.NET-WebForms eine HTTP GET -Anforderung an den Webserver, der Ihre Anforderung verarbeitet, und geben clientseitigen HTML-Code aus, damit der Browser gerendert werden kann Wenn Sie mit einem serverseitigen Steuerelement interagieren, sind die Werte im verborgenen Eingabefeld VIEWSTATE für die Eigenschaften enthalten (z. B. der Boolesche Wert für Enabled ) Wenn Sie auf eine Schaltfläche klicken, wird eine HTTP POST -Anforderung an den Webserver auf derselben Seite gesendet. Deshalb wird das Ereignis Page_Load ausgelöst, wenn Sie auf die Schaltfläche klicken.

Sobald die HTTP POST -Anforderung bearbeitet wurde, wird der HTML-Code zurückgegeben, damit der Browser erneut rendern kann. Aus diesem Grund, wenn Sie den folgenden Code in Ihrem Page_Load -Ereignis haben:

%Vor%

Es wird dem Benutzer nicht angezeigt, dass er deaktiviert wurde, bis die HTTP POST -Anforderung bearbeitet und der aktualisierte clientseitige Code zurückgegeben wurde.

Aus der ersten Frage ergab sich, dass der Server einige Sekunden brauchte, um eine Antwort zurückzugeben, wodurch mehrere Postback-Ereignisse ausgelöst werden konnten, wenn die Schaltfläche immer wieder angeklickt wurde Eine einfache (aber ärgerliche) Möglichkeit, Ihr Problem zu lösen, wäre ein normales HTML button , das in JavaScript ein function ausführt, das es deaktiviert und das onclick-Ereignis eines serverseitigen Steuerelements auslöst. Das Problem dabei wäre, dass wenn die HTTP POST -Anfrage eine Antwort zurückgibt, das reguläre HTML button aktiviert würde. Um dies zu beheben, können Sie es einfach in JavaScript mithilfe von ASP.NET-Inline-Code deaktivieren. Hier ein Beispiel:

.ASPX-Datei

%Vor%



.ASPX.CS-Datei

%Vor%     
Nathangrad 18.08.2016 14:43
quelle

Tags und Links