2012-10-31 11 views
33

Ich habe die folgenden asp.net Textbox-Steuerelement.Feuer-Ereignis auf Enter-Taste drücken Sie für ein Textfeld

<asp:TextBox ID="txtAdd" runat="server" /> 

Nachdem der Benutzer schreibt etwas in das entsprechende Feld ein und drückt die ENTER Taste, möchte ich einige Code von Code-Behind laufen.

Was soll ich tun?

Mit jQuery Ich nahm ENTER Taste und feuerte eine versteckte Schaltfläche Ereignis

$(document).ready(function(){ 
    $(window).keydown(function(e){ 
     if(e.keyCode == 13) $('#<% addbtn.ClientID %>'.click(); 
    }); 
}); 

Gibt es einen besseren Weg?

Antwort

30

ASPX:

<asp:TextBox ID="TextBox1" clientidmode="Static" runat="server" onkeypress="return EnterEvent(event)"></asp:TextBox>  
<asp:Button ID="Button1" runat="server" style="display:none" Text="Button" /> 

JS:

function EnterEvent(e) { 
     if (e.keyCode == 13) { 
      __doPostBack('<%=Button1.UniqueID%>', ""); 
     } 
    } 

CS:

protected void Button1_Click1(object sender, EventArgs e) 
    { 

    } 
+0

Eine weitere Option ist die asp zu geben: TextBox eine einzigartige Klasse und im JavaScript do $ (". MyUniqueButtonClass") [0] .click(). Dies ist ein wenig einfacher und beruht weniger auf Asp.net-Implementierungsdetails als __doPostBack. –

+0

Sollte es nicht "UniqueID" anstelle von "UniqueId" sein? Stuck mit der 6 Zeichen Grenze für Bearbeitungen :( –

+0

Sue Maurizio - Current, wäre UniqueID ich werde es beheben, danke –

5

ahaliav Fuchs ‚s Antwort richtig ist, aber es gibt ein kleines Problem Codierung.
ändern

<%=Button1.UniqueId%> 

zu

<%=Button1.UniqueID%> 

ist es Groß- und Kleinschreibung. Control.UniqueID Property

Error 14 'System.Web.UI.WebControls.Button' enthält keine Definition für 'UniqueId' und keine Erweiterungsmethode 'UniqueId' ein erstes Argument vom Typ ‚System.Web.UI.WebControls akzeptieren .Button 'könnte gefunden werden (fehlt eine Benutzungsanweisung oder eine Baugruppenreferenz?)

Nb Ich habe das TextChanged Ereignis selbst auf AutoPostBack vor der Suche nach der Antwort versucht, und obwohl es fast richtig ist, gibt es nicht das gewünschte Ergebnis, das ich für die gestellte Frage nicht wollte. Es wird ausgelöst, wenn Sie den Fokus auf Textbox verlieren und nicht, wenn Sie die Eingabetaste drücken.

108
  1. Wickeln Sie die Textbox innerhalb asp:Panel Tags

  2. ausblenden ein Button, der ein Click-Ereignis hat das tut, was geschehen soll, und geben Sie die <asp:panel> ein DefaultButton Attribut mit der ID des verborgenen Knopf.

<asp:Panel runat="server" DefaultButton="Button1"> 
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>  
    <asp:Button ID="Button1" runat="server" style="display:none" OnClick="Button1_Click" /> 
</asp:Panel> 
+14

Viel mehr richtige Antwort als die eine akzeptiert. – KristianB

+8

sollte dies die akzeptierte Antwort sein –

+0

Das funktioniert, danke .. – dps

0

diese Option versuchen.

Update, das IsPostBack Teil in Page_Load Ereignis Codierung

TextBox1.Attributes.Add("onkeydown", "if(event.which || event.keyCode){if ((event.which == 13) || (event.keyCode == 13)) {document.getElementById('ctl00_ContentPlaceHolder1_Button1').click();return false;}} else {return true}; "); 
11

vor fangen Sie konnten die Textbox und Schaltfläche in einer ASP-Wrap: Panel, und setzen Sie die Default Eigenschaft des Gremiums auf die ID Ihres Senden.

<asp:Panel ID="Panel1" runat="server" DefaultButton="SubmitButton"> 
    <asp:TextBox ID="TextBox1" runat="server" /> 
    <asp:Button ID="SubmitButton" runat="server" Text="Submit" OnClick="SubmitButton_Click" /> 
</asp:Panel> 

nun jederzeit im Fokus befindet sich in der Diskussionsrunde, die Veranstaltung ‚SubmitButton_Click‘ wird ausgelöst, wenn enter gedrückt wird.

+0

Die Schaltfläche ID sollte 'btnSubmit' ja sein? – Muhammedh

2

meine jQuery angetrieben Lösung unten :)

Text Element ist:

<asp:TextBox ID="txtTextBox" ClientIDMode="Static" onkeypress="return EnterEvent(event);" runat="server"></asp:TextBox> 
<asp:Button ID="btnSubmitButton" ClientIDMode="Static" OnClick="btnSubmitButton_Click" runat="server" Text="Submit Form" /> 

Javascript hinter:

<script type="text/javascript" language="javascript"> 
    function fnCheckValue() { 
     var myVal = $("#txtTextBox").val(); 
     if (myVal == "") { 
      alert("Blank message"); 
      return false; 
     } 
     else { 
      return true; 
     } 
    } 

    function EnterEvent(e) { 
     if (e.keyCode == 13) { 
      if (fnCheckValue()) { 
       $("#btnSubmitButton").trigger("click"); 
      } else { 
       return false; 
      } 
     } 
    } 

    $("#btnSubmitButton").click(function() { 
     return fnCheckValue(); 
    }); 
</script> 
1
<asp:Panel ID="Panel2" runat="server" DefaultButton="bttxt"> 
    <telerik:RadNumericTextBox ID="txt" runat="server"> 
    </telerik:RadNumericTextBox> 
    <asp:LinkButton ID="bttxt" runat="server" Style="display: none;" OnClick="bttxt_Click" /> 
</asp:Panel> 

 

protected void txt_TextChanged(object sender, EventArgs e) 
{ 
    //enter code here 
} 
-1

Meine 2c .. Ich habe Javascript verwendet, aber fand es Dinge tat, die nicht ganz erwartet wurden.

Verwenden Sie das defaultButton-Attribut/die Eigenschaft des Panels, wie viele der oben genannten Posts vorschlagen. Es ist zuverlässig (EASY) und funktioniert in allen Browsern, auf denen ich es getestet habe.

1

Versuchen folgen: Aspx:

<asp:TextBox ID="TextBox1" clientidmode="Static" runat="server" onkeypress="EnterEvent(event, someMethod)"></asp:TextBox>  
<asp:Button ID="Button1" onclick="someMethod()" runat="server" Text="Button" /> 

JS:

function EnterEvent(e, callback) { 
     if (e.keyCode == 13) { 
      callback(); 
     } 
    } 
+0

Dies ist fast eine exakte Kopie einer bereits akzeptierten Antwort, wie würde es der Frage einen Mehrwert hinzufügen? –

+0

Danke Marco für deinen Kommentar. In meinem Fall war es Lösung. Als ich verschiedene Kontrollen hatte, musste ich ihnen das gleiche Verhalten geben. Und ich könnte überall nur eine universelle Methode anstelle von hard-code verwenden. Ich habe nur meine Erfahrung geteilt, die ich in meinem Projekt verwendet habe. –

0
<input type="text" id="txtCode" name="name" class="text_cs"> 

und js:

<script type="text/javascript"> 
$('.text_cs').on('change', function() { 
var pid = $(this).val(); 
console.log("Value text: " + pid); 
}); 
</script> 
Verwandte Themen