我有一个usercontrol用于搜索。有一个文本框和一个搜索按钮。点击按钮时,调用搜索方法。当光标位于文本框内并按下回车键时,我想要进行搜索。如何为光标在usercontrol内的文本框内按下“Enter”设置事件
我首先想到如何做到这一点,可能是添加事件来提交表单标签的行为。但是这个用户控件没有表单标签。
有没有人有任何建议?
谢谢!
我有一个usercontrol用于搜索。有一个文本框和一个搜索按钮。点击按钮时,调用搜索方法。当光标位于文本框内并按下回车键时,我想要进行搜索。如何为光标在usercontrol内的文本框内按下“Enter”设置事件
我首先想到如何做到这一点,可能是添加事件来提交表单标签的行为。但是这个用户控件没有表单标签。
有没有人有任何建议?
谢谢!
默认情况下,如果用户在文本框中单击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";
}
我会使用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;
,这将不起作用。这对于Multiline文本框是很理想的,所以对于一个普通的ASP文本框来说是完美的:Textbox甚至是html输入。在文本框中输入Enter将触发回传,除非他明确地重写了该行为。 – David 2010-10-27 21:00:39
您是在网页上运行还是在本地运行?在文本框中输入Enter通常会将您移到本地的下一个字段,因此您可以使用OnLeave事件(我认为这是它的名字)。在网页上,Enter通常会提交正是您想要的表单。从TextChanged事件中获取新值。
否...击中Enter通常会提交表单。点击TAB通常会移到下一个字段。 – David 2010-10-27 20:56:04
是否在回发期间调用Text_Changed,这将需要采取一些提交操作来采取客户端? – KeithS 2010-10-27 20:50:04
对不起,我没有看到没有回传的要求。但是,在文本框中单击“Enter”将提交表单,触发回发。如果您想要无回发的弊端,您需要在解决方案中包含Ajax。 – David 2010-10-27 20:53:40
当然,如果TextBox被设置为Multiline – David 2010-10-27 20:55:20