Blafasel bloggt

Wo die Macht geistlos ist, ist der Geist machtlos

Festlegen eines default-Button in ASP.NET

| 1 Kommentar

Das drücken der Enter-Taste in einem WebForm kann manchmal einige unerwünschte Auswirkungen haben. Wenn man zum Beispiel einen Suchbegriff in eine dafür vorgesehene Textbox eingegeben hat und Enter drückt, kann es passieren, dass man sich ungewollt aus der Anwendung ausloggt oder irgendein anderer Button das „Klick-Event“ bekommt.

Es gibt aber eine Methode die es ermöglicht, dass ein Standard-Button für eine Textbox festgelegt wird, die dann angesprochen wird, wenn der Benutzer nach der Eingabe in ein Textfeld die Enter-Taste drückt.

Wenn eine Taste auf der Tastatur gedrückt wird, wird der JavaScript OnKeyPress-Event gefeuert. In der folgenden Methode bekommt die Textbox eine Referenz auf die Schaltfläche und simuliert so einen Mausklick auf den Button.

Natürlich, wie sollte es auch anders sein, haben der IE und Firefox unterschiedliche Modelle um diese Ereignisse abzufangen. Das heißt, dass die unterschiedlichen Verhaltensweisen erst einmal abfragen müssen.

var evt = e ? e : window.event;

Die Methode gibt „false“ zurück damit der KeyPress-Event abgeprochen wird, da sonst das Submit zweimal ausgeführt werden würde.
function ButtonClick(e, buttonID){

      var evt = e ? e : window.event;

      var bt = document.getElementById(buttonID);

      if (bt){

          if (evt.keyCode == 13){

                bt.click();

                return false;

          }

      }

}
Im code behind müssen dann Attribute für die Textbox gesetzt werden:

TextBox1.Attributes.Add("onkeypress", "return clickButton(event,'" + Button1.ClientID + "')");

Damit wird dann der klick auf Button1 simuliert, wenn die Enter-Taste gedrückt wird während der Focus auf der Textbox liegt .

Ein Kommentar

  1. Seit ASP.NET 2.0 gibt es sogar eine noch komfortablere Methode: Auf Form- bzw. Panel-Ebene kann man einen DefaultButton festlegen, der beim Drücken von „Enter“ ausgelöst werden soll.
    Beispiele gibts z.B. hier: http://forums.asp.net/t/985791.aspx

Schreibe einen Kommentar

Pflichtfelder sind mit * markiert.