我负责的项目,其中有一个页面有两个按钮,两个文本框,登录时敲回车键触发"登录"事件,但是搜索时敲回车键也触发"登录"事件,其实应触发"搜索事件"。实际上不管在哪个文本框敲回车,总是触发第一个按钮的事件 (这是由于通常回车键默认触发第一按钮的事件)。
BOSS让我修改一下,我想这么简单的东西,不是什么难题,经过一番激烈的战斗,无数脑细胞壮烈的牺牲,却没有任何进展,....很是窝火....最后在百度的帮助下找到了解决办法,现分享如下: [实例]
要点有三:
1. 登录的文本框是HTML控件,搜索是Asp.net控件,添加事件的方式不同;
2. 给button控件设置属性: UseSubmitBehavior="False",将Button的type由submit变为button;
3. 取得button控件的ID: document.getElementById('<%=imgLogin.ClientID %>')
实例代码如下,欢迎大家拍砖...
前台代码:
View Code
1 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="gly.aspx.cs" Inherits="gly" %>
2
3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4 <html xmlns="http://www.w3.org/1999/xhtml">
5 <head runat="server">
6 <title></title>
7 <script type="text/javascript">
8
9 function t_Login() {
10 if (event.keyCode == 13) {
11 document.getElementById('<%=imgLogin.ClientID %>').onclick();//注意这个地方拿ID,
12 }
13 }
14
15 function search() {
16 if (event.keyCode == 13) {
17 document.getElementById('<%=imgsearch.ClientID %>').onclick();
18 }
19 }
20
21 </script>
22
23 </head>
24 <body>
25 <form id="form1" runat="server">
26 <div>
27 登陆:
28 <input name="textfield" type="text" id="txtUserName" runat="server" onkeydown="t_Login();" />
29
30 <asp:Button ID="imgLogin" runat="server" OnClick="imgLogin_Click"
31 UseSubmitBehavior="False" Text="登陆" />
32 <br/>
33 搜索:
34 <asp:TextBox runat="server" ID="txtkey"/>
35
36 <asp:Button ID="imgsearch" runat="server" OnClick="imgsearch_Click"
37 UseSubmitBehavior="False" Text="搜索" />
38 </div>
39 </form>
40 </body>
41 </html>
后台代码:
View Code
1 using System;
2
3 public partial class gly : System.Web.UI.Page
4 {
5 protected void Page_Load(object sender, EventArgs e)
6 {
7 //登录的文本框是HTML控件,搜索是Asp.net控件。为文本框添加事件的方法不同。
8 txtkey.Attributes.Add("onkeydown", "search();");
9 }
10
11 protected void imgLogin_Click(object sender, EventArgs e)
12 {
13 //登陆...
14 if(txtUserName.Value!="")
15 {
16 Response.Write("登陆...");
17 }
18 }
19
20 protected void imgsearch_Click(object sender, EventArgs e)
21 {
22 //搜索
23 if(txtkey.Text!="")
24 {
25 Response.Write("搜索...");
26 }
27 }
28 }