最近在做一个项目,在我职责范围之内有一个“”搜索“”功能,实现方案并不难,但却被一些小问题给绊住了,今天总结第一个小问题:如何在textBox里面实现回车触发某个button事件。
网上提供的方案很多,有效的我试过3种:
方案一是完美解决方案:简约而简单。无警告无错误。
- <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#的
- <asp:textbox id="t" runat="server" οnkeydοwn="if(event.keyCode==13) btn1.click();FormName.Submit();">
这种也可以实现,但是会有警告说onkeydown不是TextBox的属性。
解决方案是在后台的page load里添加
- t.Attributes.Add("onkeydown","要激发的函数");
然后进行一系列处理,消除警告。
第二种是通过js实现函数功能:
- <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" οnkeydοwn="keyDown"></asp:TextBox>
- <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />
- <input style="display:none" />
这一种同样会有上面的警告,同样可以实现功能。
---------------------------------------------------------------------------
在textbox里面添加onkeydown方法的解决方案还需要研究,我暂时还没能消除那个警告。
= =#