2010-10-27 73 views
0

我有一个usercontrol用于搜索。有一个文本框和一个搜索按钮。点击按钮时,调用搜索方法。当光标位于文本框内并按下回车键时,我想要进行搜索。如何为光标在usercontrol内的文本框内按下“Enter”设置事件

我首先想到如何做到这一点,可能是添加事件来提交表单标签的行为。但是这个用户控件没有表单标签。

有没有人有任何建议?

谢谢!

回答

0

默认情况下,如果用户在文本框中单击Enter时,表单被张贴,触发回发。因此:

使ontextchanged事件发生这种情况。 下面是关于写过的最简单的代码示例:

<asp:TextBox ID="TextBox1" runat="server" ontextchanged="TextBox1_TextChanged"></asp:TextBox> 
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" /> 
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> 

,并在后台代码:

protected void Button1_Click(object sender, EventArgs e) 
{ 
    SomeFunctionForHandlingEvents(); 
} 
protected void TextBox1_TextChanged(object sender, EventArgs e) 
{ 
    SomeFunctionForHandlingEvents(); 
} 
private void SomeFunctionForHandlingEvents() 
{ 
    Label1.Text = "event called"; 
} 
+0

是否在回发期间调用Text_Changed,这将需要采取一些提交操作来采取客户端? – KeithS 2010-10-27 20:50:04

+0

对不起,我没有看到没有回传的要求。但是,在文本框中单击“Enter”将提交表单,触发回发。如果您想要无回发的弊端,您需要在解决方案中包含Ajax。 – David 2010-10-27 20:53:40

+0

当然,如果TextBox被设置为Multiline – David 2010-10-27 20:55:20

1

我会使用JavaScript做到这一点:附加的的OnKeyPress处理程序,查找键码13,并呼吁form.submit:

function enterPressed(evn) { 
if (window.event && window.event.keyCode == 13) { 
    document.forms[0].submit; 
} else if (evn && evn.keyCode == 13) { 
    document.forms[0].submit; 
} 
} 
document.onkeypress = enterPressed; 
+0

,这将不起作用。这对于Multiline文本框是很理想的,所以对于一个普通的ASP文本框来说是完美的:Textbox甚至是html输入。在文本框中输入Enter将触发回传,除非他明确地重写了该行为。 – David 2010-10-27 21:00:39

0

您是在网页上运行还是在本地运行?在文本框中输入Enter通常会将您移到本地的下一个字段,因此您可以使用OnLeave事件(我认为这是它的名字)。在网页上,Enter通常会提交正是您想要的表单。从TextChanged事件中获取新值。

+1

否...击中Enter通常会提交表单。点击TAB通常会移到下一个字段。 – David 2010-10-27 20:56:04

相关问题