Codegod - The page for .NET-developers
Winforms Grid TreeList Control .NET 2.0/3.5

Return Key javascript klickt LinkButton in IE und FireFox
Section: ASP.NETRating: 4.8

Add to YiGGAdd to google-bookmarksAdd to linkarenaAdd to redditAdd to del.icio.usAdd to misterwongAdd to digg




Introduction

Dieser kurze Artikel zeigt auf, wie man browserunabhängig (IE/FF/Moz) einen Return-Keypress in einer Html-TextBox (Passwort) abfängt und einen ASP:LinkButton programmatisch klickt. Dieses Szenario wird vor allem für ein komfortables Login benötigt, wenn der User nicht gezwungen sein soll einen Button für das Login zu drücken.

Die HTML/ASP-Elemente


<!-- Passwortfeld das bei Return ein klick auf lbOK auslösen soll --> <input onkeypress="checkReturn(event)" type=password ID="txtPassword" runat="server" class="TextBoxStyle" style="width: 130px" /> <!-- Linkbutton den wir klicken möchten --> <asp:LinkButton ID="lbOK" runat="server" CssClass="White" OnClick="btnLogin_Click" Text="OK "></asp:LinkButton>

Der LinkButton lbOK ruft eine serverseitige Methode auf, die ein Login ausführt. Um diesen Aufruf auch über einen return-Keypress auf dem Textfeld zu erreichen, kann folgende javascript-function verwendet werden:

<SCRIPT language="javascript"> function checkReturn(e) { var evt = e || window.event; // control erfragen das man klicken will var c = document.getElementById('<%=lbOK.ClientID%>'); if(!evt) return; // key bekommt den keyCode browserunabhängig zugewiesen var key = 0; // für mozilla/ff, wenn keycode==0 muss 'evt.which' abgefragt werden if (evt.keyCode) { key = evt.keyCode; } else if (typeof(evt.which)!= 'undefined') { key = evt.which; } // return wurde gedrückt. if( key == 13 ) { // Diese Zuweisung hat den Effekt wie ein .click(), // jedoch funtioniert sie für firefox und ie window.location= c.href; } } </SCRIPT>

Viel Spaß damit!




 Reader-Comments:

neves
6/8/2007 1:48:12 PM

Guter Artikel

Hallo,
danach hatte ich schon eine Weile gesucht. Das Festlegen per Form.DefaultButton funktioniert ja anscheinend bei einem LinkButton nicht.

Der Aufruf LoginButton.ClientID funktioniert bei mir leider nicht, da habe ich gleich die ClientID fest eingetragen. Ich denke es liegt an dem LoginView usw.?!
// control erfragen das man klicken will
var c = document.getElementById('<%=LoginButton.ClientID%>');

Danke u. bring weiter solche Artikel.
Gruss neves

CodeGod
6/8/2007 10:24:54 PM

Danke für das feedback

Hallo neves, danke für das positive feedback. Ich versuche, wann immer ich in der Entwicklung auf eine Besonderheit stoße, die andere interessieren könnte, diese in Form von Artiklen festzuhalten.

Zum Beispiel fällt mir gerade auf, dass es mir schwerfällt mich auf Deinen Kommentar zu beziehen, da ich ihn in diesem Formular nicht sehe:-) ... Werde ich verbessern!

Gruß

Codegod