Laden...

Key Event zum absenden eines Textes

Erstellt von Knollo vor 17 Jahren Letzter Beitrag vor 17 Jahren 1.257 Views
K
Knollo Themenstarter:in
20 Beiträge seit 2006
vor 17 Jahren
Key Event zum absenden eines Textes

Hallo ich möchte den Inhalt einer Textbox durch ein KeyEvent abschicken, anstatt durch das aktivieren eines Buttons. Hab leider nichts im Web gefunden wie man soetwas machen kann.

Meine Frage daher:

Ist es möglich KeyEvents in ASP unter C# zu verwenden und wenn ja wie sieht eine Umsetzung aus?

Vielen Dank schonmal

Stefan

3.170 Beiträge seit 2006
vor 17 Jahren

Hallo,
das geht AFAIK nur indem Du im JavaScript das onkeydown oder onkeypress Ereignis nutzt. Direkt mit ASP.NET ist mir da nichts bekannt.

Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca

K
Knollo Themenstarter:in
20 Beiträge seit 2006
vor 17 Jahren

Habe zur Zeit nach dem Hinweiss mit JavaScript folgende Variante gefunden:


<script runat="server">    

protected void Page_Load(object sender, EventArgs e)  
{   
    string script = string.Format("if(window.event.keyCode == 13) {0}", this.GetPostBackEventReference(bt_search));
    tb_search.Attributes.Add("onkeydown", script);
}    

void bt_click(object sender, EventArgs e)  
{   
    lb_msg.Text = string.Format("Sie haben eingegeben: '{0}'", tb_search.Text);  
    tb_search.Text = "";
}    

</script>    

<form runat="server">     

<ASP:TextBox id="tb_search" runat="server"/>     
<ASP:LinkButton id="bt_search" runat="server" Text="Suchen..." OnClick="bt_click"/>
<ASP:Label id="lb_msg" runat="server"/>

</form>

das Problem ist aber, das zwar in diesem Beispiel nach einem KeyEvent der TextboxInhalt gelöscht wird aber nicht in meiner Quelltext.

Wer kann helfen?

3.170 Beiträge seit 2006
vor 17 Jahren

Wenn Du wirklich nur den Textboxinhalt absenden willst, kannst du viel einfacher die Form abschicken:

<script language="javascript">
function MyKeyDown(evt)
{
// ein Hack für verschiedene Browser:
if(!evt) { evt = window.event; }
if(evt.keyCode == 13)
{
document.forms[0].submit();
}

}
</script>
<form runat="server">

<ASP:TextBox id="tb_search" runat="server" onkeydown="MyKeyDown"/>
<ASP:LinkButton id="bt_search" runat="server" Text="Suchen..." OnClick="bt_click"/>
<ASP:Label id="lb_msg" runat="server"/>

</form>

EDIT: Fehler gemacht!! Das event muss im scripttag registriert werden.

Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca

3.170 Beiträge seit 2006
vor 17 Jahren

ALso so:

<script language="javascript">
  function MyKeyDown(evt) 
 {  // ein Hack für verschiedene Browser:
  if(!evt) { evt = window.event; }
  if(evt.keyCode == 13)
  {  document.forms[0].submit();
  }
    
}
</script>
  <form runat="server">     <ASP:TextBox id="tb_search" runat="server" onkeydown="MyKeyDown"/>   <ASP:LinkButton id="bt_search" runat="server" Text="Suchen..." OnClick="bt_click"/>  <ASP:Label id="lb_msg" runat="server"/>    </form>
<script language="javascript">
document.getElementById("bt_click").onkeydown = MyKeyDown;
</script>

EDIT: Ich empfehle auf jeden Fall den eigenen Handler, damit das in den meistenBrowsern mit dem Event-Objekt richtig klappt.
Ansonsten auch

<ASP:TextBox id="tb_search" runat="server" onkeydown="if(window.event.keyCode == 13){document.forms[0].submit()}"/>

EDIT2:
ist mir doch im letzten Codeschnipsel die if-Abfrage entgangen... 🤔

Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca