对于B/S的系统,在页面控制上不如C/S系统那么控制灵活,就比如现在一个页面或用户控件里有两个按钮button1和button2,两个文本框Textbox1和Textbox2,当您想控制当焦点在Textbox1时回车提交button1,在Textbox2时提交button2,这个时候就需要通过客户端脚本来实现和服务器端控件的交互,这是我写的封装好的类,
控件继承 TextBox,SubmitControl属性用来指定此文本框上按回车时由哪个按钮来响应。
 SubmitableControlConvertor增加设计时支持,就是在设计时可以用下拉框选择提交按钮。
目前只考虑了Button、LinkButton和ImageButton作为提交按钮,当然继承它们的控件也可以。

 1 using System;
 2 using System.Web.UI;
 3 using System.Web.UI.WebControls;
 4 using System.ComponentModel;
 5 
 6 namespace MyCompany.Controls
 7 {
 8     public class SubmitTextBox : TextBox
 9     {
10         /// <summary>
11         /// 用来指定按回车时由哪个按钮来响应
12         /// </summary>
13         [TypeConverter(typeof(SubmitableControlConvertor)), DefaultValue(""),Category("Behavior")]
14         public string SubmitControl
15         {
16             get
17             {
18                 object ret = this.ViewState["SubmitControl"];
19                 if (ret != null)
20                 {
21                     return (string) ret;
22                 }
23                 return string.Empty; 
24             } 
25             set 
26             {
27                 this.ViewState["SubmitControl"] = value;
28             }
29         }
30 
31         protected override void AddAttributesToRender(HtmlTextWriter writer) 
32         {
33             base.AddAttributesToRender(writer);
34             if(this.SubmitControl.Length > 0)
35             {
36                 Control con = FindControl(SubmitControl);
37                 if(con != null)
38                 {
39                     string script = "if(event.keyCode == 13){document.getElementById('" + con.ClientID + "').click();event.returnValue=false;}";
40                     writer.AddAttribute("onkeydown",script);
41                 }
42             }
43         } 
44     } 
45 }
 1 using System;
 2 using System.Web.UI;
 3 using System.Web.UI.WebControls;
 4 using System.ComponentModel;
 5 using System.Collections;
 6 
 7 namespace MyCompany.Controls
 8 {
 9     public class SubmitableControlConvertor : StringConverter
10     {
11         private object[] GetControls(IContainer container)
12         {
13             ComponentCollection components = container.Components;
14             ArrayList ret = new ArrayList();
15             foreach (IComponent control in components)
16             {
17                 if (!(control is Button || control is LinkButton || control is ImageButton))
18                 {
19                     continue;
20                 }
21                 Control button = (Control) control;
22                 if ((button.ID != null) && (button.ID.Length != 0))
23                 {
24                     ret.Add(string.Copy(button.ID));
25                 }
26             }
27             ret.Sort(Comparer.Default);
28             return ret.ToArray();
29         }
30  
31         public override System.ComponentModel.TypeConverter.StandardValuesCollection GetStandardValues(ITypeDescriptorContext context)
32         {
33             if ((context != null) && (context.Container != null))
34             {
35                 object[] controls = this.GetControls(context.Container);
36                 if (controls != null)
37                 {
38                     return new TypeConverter.StandardValuesCollection(controls);
39                 }
40             }
41             return null;
42         }
43 
44         public override bool GetStandardValuesExclusive(ITypeDescriptorContext context)
45         {
46             return false;
47         }
48 
49         public override bool GetStandardValuesSupported(ITypeDescriptorContext context)
50         {
51             return true;
52         }
53     } 
54 }

在页面上只需要象下面这样调用就可以:

1 <%@ Control Language="c#"%>
2 <%@ Register TagPreFix="MyCompany" Namespace="MyCompany.Controls" Assembly="MyCompany.Controls"%>
3 <MyCompany:SUBMITTEXTBOX id="txtKeys" SubmitControl="btnSearch" runat="server" maxlength="20" Value="请输入搜索关键字" onfocus="if(this.value=='请输入搜索关键字')this.value='';" onblur="if(this.value=='')this.value='请输入搜索关键字'"></MyCompany:SUBMITTEXTBOX>&nbsp;&nbsp;&nbsp;<asp:imagebutton id="btnSearch" runat="server"></asp:imagebutton>

转载于:https://www.cnblogs.com/yangxiangwu/archive/2006/05/09/394991.html

如何实现通过回车键提交表单相关推荐

  1. jq html 回车提交表单,jQuery事件之键盘事件(ctrl+Enter回车键提交表单等)

    键盘事件处理所有用户在键盘敲击的情况,不管在文本输入区域内部还是外部.键盘事件在不同的浏览器中作用的范围是不一样的,通常这种键盘事件可以作用于 Form元素,a标签元素,window ,documen ...

  2. 谈谈Enter回车键提交表单那些事

     我们在做系统前端的时候,往往会用到form标签,采用jquery插件做表单验证.我们信誓旦旦的一位把一切都做好的时候,并且检查一遍又一遍的时候,意向不到的事情发生了,也许是出于一种意外,而这种意 ...

  3. 回车键提交与不提交表单的解决方法

    最近遇到IE6/7下敲击回车后表单不提交的问题,网上找到些资料,备案下: 回车键提交表单:设置 <input /> 标签或者 <button> 标签的属性 type=" ...

  4. 不同浏览器对回车提交表单的处理办法(转载)

    不同浏览器对回车提交表单的处理办法(转载) 对下面的一段代码,刚开始使用 onClick 事件,在 IE 6.0 中,要按"提交"按扭才起做用,直接回车不行,而在 firefox ...

  5. h5移动端使用手机自带软键盘的“前往”、“go”键提交表单

    这也是我自己在项目中遇到的问题,在网上找了很久都没有找到类似的.试了很多次浪费了很多时间 登录和搜索时"前往"."go"或者回车(电脑键盘)键提交表单(form ...

  6. html 禁用回车提交,HTML防止input回车提交表单

    原链接:https://blog.csdn.net/ligang2585116/article/details/44699567 自动提交情况说明: 1.默认情况下,单个输入框,无论按钮的type=& ...

  7. Form表单 回车(Enter)提交表单问题

    Form表单 回车(Enter)提交表单问题 在Form表单中input会自动响应回车事件.这是表单的默认提交动作. 表单的提交行为,可以用两种方式定义,一是form表单自身,二是form表单的but ...

  8. html ajax提交表单实例,jQuery使用$.ajax提交表单完整实例

    本文实例讲述了jQuery使用$.ajax提交表单的方法.分享给大家供大家参考,具体如下: 首先,新建Login.html页面: /p> "http://www.w3.org/TR/x ...

  9. 通过按Enter阻止用户提交表单

    我在网站上进行了一项调查,用户单击Enter键(我不知道为什么),然后不按提交按钮就意外提交了调查(表单),似乎存在一些问题. 有办法防止这种情况吗? 我在调查中使用的是HTML,PHP 5.2.9和 ...

最新文章

  1. Xamarin XAML语言教程将XAML设计的UI显示到界面
  2. C语言经典程序之:求十个整数中的最大最小数并输出(指针)
  3. 恢复 root 本地无权限 Access denied for user 'root'@'localhost' (using password: NO)
  4. python2异步编程_Python 异步编程入门
  5. HttpClient api-连接池
  6. mysql从服务器配置_mysql主从服务器配置基础教程
  7. MySQL 中隔离级别 RC 与 RR 的区别
  8. websphere一直安装部署_构建独立部署系统,从部署规范开始
  9. ARCGIS制作三维地图教程(BIGEMAP)
  10. 地理空间数据云 Landsat 8 OLI_TIRS 影像数据下载详解
  11. 陕西中医药有计算机系吗,校内制度 - 陕西中医药大学信息化建设管理处
  12. 【网站源码】3D元素周期表源码
  13. 矩阵求逆(伴随阵法C++)
  14. premiere直接使用计算机素材,Premiere使用技巧之视频捕捉 -电脑资料
  15. Cluster-based Beam Search for Pointer-Generator Chatbot Grounded by Knowledge
  16. 康托尔连续统假设(CH)不成立
  17. Halcon知识:binocular_disparity(双目视差)
  18. 服务器受美国保护网站,该网站服务器受美国保护
  19. LIN休眠唤醒及测试心得
  20. python 绘制 3D 曲面

热门文章

  1. Cisco统一智能呼叫中心简介
  2. NVR(网络视频录像机)介绍
  3. 计算机职业倾向自我评价50字,自我评价50字
  4. 如何将所有中文的文件名称翻译成日语
  5. 市场营销学【最精典】案例分析
  6. STM32两轮自平衡小车物料采购清单
  7. 广州电信最新DNS更新
  8. c语言循环移位寄存器,[转载]关于移位寄存器74HC164的使用
  9. RSA算法与维吉尼亚密码
  10. 计算机网络用户名及密码如何查询,用wifi连接电脑的怎么查看宽带账号密码