最近在做一个项目,在我职责范围之内有一个“”搜索“”功能,实现方案并不难,但却被一些小问题给绊住了,今天总结第一个小问题:如何在textBox
里面实现回车触发某个button
事件。
网上提供的方案很多,有效的我试过3种:
方案一是完美解决方案:简约而简单。无警告无错误。
Code:
<asp:panel id="panSearch" runat="server" defaultbutton="SearchBtn">
<asp:requiredfieldvalidator id="KeywordsBlank" runat="server" controltovalidate="KeywordsTextField" errormessage="Required"></asp:requiredfieldvalidator>
<asp:textbox id="KeywordsTextField" runat="server" width="257px" height="17px" autocompletetype="Search"></asp:textbox>
<asp:imagebutton id="SearchBtn" runat="server" width="22px" height="18px" borderwidth="0" imageurl="~/images/search_btn.gif" onclick="BtnToSearch" imagealign="Middle" />
<br />
</asp:panel>
其中的关键是将TextBox
和你要关联的Button
放在同一个panel
里面,用DefaultButton="SearchBtn"
来声明要激发的button
。
方案二:在textBox
里面使用onkeydown
方法,这里又分为两种:
一种是直接利用C#的
Code:
<asp:textbox id="t" runat="server" onkeydown="if(event.keyCode==13) btn1.click();FormName.Submit();">
这种也可以实现,但是会有警告说onkeydown
不是TextBox
的属性。
解决方案是在后台的Page_Load
里添加
Code:
t.Attributes.Add("onkeydown","要激发的函数");
然后进行一系列处理,消除警告。
第二种是通过js实现函数功能:
Code:
<html>
<head>
<script type="text/javascript">
function keyDown()
{
var e=event.srcElement;
if(event.keyCode==13)
{
document.getElementById("Button1").click();
}
}
</script>
</head>
<body>
<form id="form1" runat="server">
<asp:textbox id="TextBox1" runat="server" onkeydown="keyDown"></asp:textbox>
<asp:button id="Button1" runat="server" onclick="Button1_Click" text="Button" />
<input style="display:none" />
</form>
</body>
</html>
这一种同样会有上面的警告,同样可以实现功能。
在textbox
里面添加onkeydown
方法的解决方案还需要研究,我暂时还没能消除那个警告。