首页 > 编程 > .NET > 正文

asp.net实现取消页面表单内文本输入框Enter响应的方法

2024-07-10 12:47:32
字体:
来源:转载
供稿:网友

本文实例讲述了asp.net实现取消页面表单内文本输入框Enter响应的方法。,具体如下:

很早以前开发asp.net项目的时候遇到的:在一个服务器TextBox控件上按下 Enter键,页面回发刷新一遍。后来google一下,发现这是asp.net2.0为表单处理专门设置的"Enter key"功能,关于asp.net ajax表单的enter key,你可以查看这一篇《ASP.NET基于Ajax的Enter键提交问题》。前面给出链接的两篇都是叫我们怎么设置enter key默认触发事件的。现在有一个新需求是这样的,录入人员在录入的时候按下enter键不提交表单(想想也是合理的,如果表单中录入框较多,一不小心按下enter键页面要回发多少次?),除非直接点击服务器端提交按钮。简单地说,就是去掉表单元素的enter key功能。下面是我的实现:

一、初步分析和实现:

1、页面继承一个基类BasePage,基类继承自Page类,在基类中注册特定服务器控件的onkeydown脚本事件

using System;using System.Data;using System.Configuration;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;public class BasePage : System.Web.UI.Page{ public BasePage() { } protected override void OnInit(EventArgs e) {  base.OnInit(e);  CancelFormControlEnterKey(this.Page.Form.Controls); } /// <summary> /// 在这里我们给Form中的服务器控件添加客户端onkeydown脚步事件,防止服务器控件按下enter键直接回发 /// </summary> /// <param name="controls"></param> public static void CancelFormControlEnterKey(ControlCollection controls) {  foreach (Control item in controls)  {   //服务器TextBox   if (item.GetType() == typeof(System.Web.UI.WebControls.TextBox))   {    WebControl webControl = item as WebControl;    webControl.Attributes.Add("onkeydown", "if(event.which || event.keyCode){if ((event.which == 13) || (event.keyCode == 13)) {return false;}} ");   }   //html控件   else if (item.GetType() == typeof(System.Web.UI.HtmlControls.HtmlInputText))   {    HtmlInputControl htmlControl = item as HtmlInputControl;    htmlControl.Attributes.Add("onkeydown", "if(event.which || event.keyCode){if ((event.which == 13) || (event.keyCode == 13)) {return false;}} ");   }   //用户控件   else if (item is System.Web.UI.UserControl)   {    CancelFormControlEnterKey(item.Controls); //递归调用   }  } }}

这样,想取消“enter key”功能的页面只有继承一下BasePage类即可。

2、用户控件的处理:我的思路就是在基类中继续处理用户控件内部的runat=server的控件,测试也是通过的。

3、页面中和用户控件里的没有runat=server标签的html控件,直接给这些html控件添加onkeydown事件。

下面是测试页面和其对应的类文件:

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表