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
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
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?
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
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