如何实现通过回车键提交表单
对于B/S的系统,在页面控制上不如C/S系统那么控制灵活,就比如现在一个页面或用户控件里有两个按钮button1和button2,两个文本框Textbox1和Textbox2,当您想控制当焦点在Textbox1时回车提交button1,在Textbox2时提交button2,这个时候就需要通过客户端脚本来实现和服务器端控件的交互,这是我写的封装好的类,
控件继承 TextBox,SubmitControl属性用来指定此文本框上按回车时由哪个按钮来响应。
SubmitableControlConvertor增加设计时支持,就是在设计时可以用下拉框选择提交按钮。
目前只考虑了Button、LinkButton和ImageButton作为提交按钮,当然继承它们的控件也可以。
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 }
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 }
在页面上只需要象下面这样调用就可以:
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> <asp:imagebutton id="btnSearch" runat="server"></asp:imagebutton>
转载于:https://www.cnblogs.com/yangxiangwu/archive/2006/05/09/394991.html
如何实现通过回车键提交表单相关推荐
- jq html 回车提交表单,jQuery事件之键盘事件(ctrl+Enter回车键提交表单等)
键盘事件处理所有用户在键盘敲击的情况,不管在文本输入区域内部还是外部.键盘事件在不同的浏览器中作用的范围是不一样的,通常这种键盘事件可以作用于 Form元素,a标签元素,window ,documen ...
- 谈谈Enter回车键提交表单那些事
我们在做系统前端的时候,往往会用到form标签,采用jquery插件做表单验证.我们信誓旦旦的一位把一切都做好的时候,并且检查一遍又一遍的时候,意向不到的事情发生了,也许是出于一种意外,而这种意 ...
- 回车键提交与不提交表单的解决方法
最近遇到IE6/7下敲击回车后表单不提交的问题,网上找到些资料,备案下: 回车键提交表单:设置 <input /> 标签或者 <button> 标签的属性 type=" ...
- 不同浏览器对回车提交表单的处理办法(转载)
不同浏览器对回车提交表单的处理办法(转载) 对下面的一段代码,刚开始使用 onClick 事件,在 IE 6.0 中,要按"提交"按扭才起做用,直接回车不行,而在 firefox ...
- h5移动端使用手机自带软键盘的“前往”、“go”键提交表单
这也是我自己在项目中遇到的问题,在网上找了很久都没有找到类似的.试了很多次浪费了很多时间 登录和搜索时"前往"."go"或者回车(电脑键盘)键提交表单(form ...
- html 禁用回车提交,HTML防止input回车提交表单
原链接:https://blog.csdn.net/ligang2585116/article/details/44699567 自动提交情况说明: 1.默认情况下,单个输入框,无论按钮的type=& ...
- Form表单 回车(Enter)提交表单问题
Form表单 回车(Enter)提交表单问题 在Form表单中input会自动响应回车事件.这是表单的默认提交动作. 表单的提交行为,可以用两种方式定义,一是form表单自身,二是form表单的but ...
- html ajax提交表单实例,jQuery使用$.ajax提交表单完整实例
本文实例讲述了jQuery使用$.ajax提交表单的方法.分享给大家供大家参考,具体如下: 首先,新建Login.html页面: /p> "http://www.w3.org/TR/x ...
- 通过按Enter阻止用户提交表单
我在网站上进行了一项调查,用户单击Enter键(我不知道为什么),然后不按提交按钮就意外提交了调查(表单),似乎存在一些问题. 有办法防止这种情况吗? 我在调查中使用的是HTML,PHP 5.2.9和 ...
最新文章
- Xamarin XAML语言教程将XAML设计的UI显示到界面
- C语言经典程序之:求十个整数中的最大最小数并输出(指针)
- 恢复 root 本地无权限 Access denied for user 'root'@'localhost' (using password: NO)
- python2异步编程_Python 异步编程入门
- HttpClient api-连接池
- mysql从服务器配置_mysql主从服务器配置基础教程
- MySQL 中隔离级别 RC 与 RR 的区别
- websphere一直安装部署_构建独立部署系统,从部署规范开始
- ARCGIS制作三维地图教程(BIGEMAP)
- 地理空间数据云 Landsat 8 OLI_TIRS 影像数据下载详解
- 陕西中医药有计算机系吗,校内制度 - 陕西中医药大学信息化建设管理处
- 【网站源码】3D元素周期表源码
- 矩阵求逆(伴随阵法C++)
- premiere直接使用计算机素材,Premiere使用技巧之视频捕捉 -电脑资料
- Cluster-based Beam Search for Pointer-Generator Chatbot Grounded by Knowledge
- 康托尔连续统假设(CH)不成立
- Halcon知识:binocular_disparity(双目视差)
- 服务器受美国保护网站,该网站服务器受美国保护
- LIN休眠唤醒及测试心得
- python 绘制 3D 曲面