2010-08-12 18 views
18

Ich habe ein Textfeld und viele Tasten. Wenn sich der Benutzer in einem Textfeld befindet und die "Enter" -Taste drückt, wird ein bestimmtes Tastenklickereignis ausgelöst. Ich habe im Internet gelesen, dass es Probleme mit der "Enter" -Taste gibt, und ich habe versucht, einige Lösungen, aber immer noch gibt es diese Schaltfläche Ereignis (diese Schaltfläche ist die erste Schaltfläche auf der Seite).Enter-Taste in asp.net fire falsche Taste

Ich habe versucht, einen Knopf zu schaffen, die nichts tut, und dies in der page_load schreiben:

idTextBoxFA.Attributes.Add("onkeydown","if(event.which || event.keyCode){if ((event.which == 13) || (event.keyCode == 13)) {document.getElementBtId('" + noEnterButton.UniqueID + "').click();return false;}} else {return true}; "); 

All meine Seite Kontrollen in einer Form vorliegen, und ich versuchte, das Formular „default“ Eigenschaft auf diese Schaltfläche gebe ich herstellte. Das hat auch nicht funktioniert.

Irgendeine Idee, warum das nicht funktioniert und was mache ich falsch?

+0

Mögliche Duplikat [wie eine Standard festlegen ‚Eingabe‘ auf eine bestimmte Taste] (http://stackoverflow.com/questions/7638119/how-to-set-a-default-geben Sie-auf-eine-bestimmte-Taste) –

+0

Mine ist früher;) –

+0

Die beiden Fragen sind so ähnlich, dass ich nicht sicher war, welche zu kennzeichnen. Der Trend von StackOverflow besteht darin, die klarere und besser formatierte Frage auszuwählen, nicht die, die zuerst gepostet wurde. In diesem Fall war jedoch selbst die Formulierung ähnlich genug, also ging ich mit der populäreren Frage und der, die mehr Stimmen hatte. Es tut uns leid. –

Antwort

36

Der Standard Weg in ASP.NET zu steuern, welche Übermittlungsschaltfläche aktiviert ist, wenn die EINGABETASTE gedrückt wird, ist das Umbrechen der Steuerelemente und Schaltflächen in einem Asp: Panel mit der DefaultButton-Eigenschaft auf die richtige Schaltfläche festgelegt.

Wenn ich Ihre Frage richtig lese, möchten Sie nur eine bestimmte Schaltfläche aktiviert werden, wenn Sie die EINGABETASTE drücken, also alles auf Ihrer Seite in einem einzigen Asp: Panel umbrechen.

<asp:Panel id="pnlDefaultButton" runat="server" DefaultButton="btnOK"> 
    <!-- All controls here including: --> 
    <asp:Button id="btnOK" runat="server" Text="OK" /> 
</asp:Panel> 
+0

danke, ich fand das wirklich hilfreich :) – iamserious

+0

Was ist mit asp: Inhalt? Ich benutze Masterseiten und habe kein Panel oder Formular auf meiner Seite. – Marcel

+0

@Marcel - Ich bin mir nicht sicher, was du meinst. Die Verwendung von Masterseiten ändert nicht viel, es sei denn, die Schaltfläche befindet sich in einem Inhaltsabschnitt und die anderen Teile der Seite woanders. In dieser Situation können Sie Ihren Inhalt neu anordnen oder in eine reine JavaScript-Lösung schauen. –

7

Kein Panel wird benötigt. Verwenden Sie einfach das folgende:

UseSubmitBehavior="false" 
0

Bitte verwenden

idTextBoxFA.Attributes.Add("onkeypress", "javascript:var evnt = window.event"; 
if(evnt.keyCode==13) 
{ 
document.getElementById('" + noEnterButton.ClientID + "').click(); 
} 
else{};");