asp.net中按钮回车事件(转自http://www.cnblogs.com/adinet/archive/2013/03/03/2941424.html)
在做ASP.net WEB应用的时候,常常遇到会在同一个页面里添加多个按钮,而每个按钮肯定都会触发页面回送事件。
在ASP.NET中,只能指定一个带有runat="server"的FORM表单,因此,这个表单会指派哪个按钮为默认提交按钮呢?
不做任何处理的情况下是很难控制的,例如在同一个页面里做了N个搜索框,设计上理想的思路是在某一输入框输入关键字后,用户按ENTER键,执行当前输入的输入框对应的提交按钮,但是,实际上往往事与愿违。无论怎么提交,总是会只执行某一个按钮事件。
如果指定Form的默认按钮,可以指定Form的DefaultButton属性值为一个按钮的ID。但这样下来,回车时就永远执行这个按钮,其它按钮无法被回车触发。
网上很多方法都是使用JAVASCRIPT来进行判断,在输入框中加入KEYPRESS之类的事件,然后检查eventCode,如果是回车键,那么就指定执行某一个按钮。
这个方法不是不行,但是,并不好维护,而且在处理复杂的逻辑时,往往不好控制。
其实,ASP.NET给出了很好的解决方案,只是通常不被人注意。
首先,屏蔽浏览器提交模式,也就是说,FORM不再默认指定一个ENTER提交的按钮
方法是将控件button的UseSubmitBehavior设置为false(LinkButton和ImageButton没有这个属性,不必设置),这样这个按钮就不会接受回车提交,这样就不会出现用户焦点在页面某处聚焦时按回车提交的情况。
为什么会这样呢?查看页面源文件我们会发现本来ASP.NET的BUTTON服务器控件在发送到客户端后type="submit",但这时UseSubmitBehavior设置为false后,type="button" ,而且多了一个onclick事件,内容是"javascript:__doPostBack('Button1','')" id="Button1",这样,就说明,这个按钮不再是FORM的提交按钮了,而只是一个普通按钮,要提交页面必须执行click事件,所以怎么点回车,也不会执行这个按钮的提交事件。
刚才只是第一步,阻止了默认的提交。但是,我们要的效果是回车可以提交啊。只是设置这一个属性当然无法达到我们想要的效果。
接下来,我们要了解Panel控件。
其实Panel控件是非常有用的,他是一个容器,在ASP.NET的Panel控件中有一个属性 DefaultButton, 这个属性在ASP.NET的Form控件中也有(前有叙述)。
Panel是一个特殊的控件 MSDN上的说明是:使用Panel 控件来组织 Form、另一 Panel 或模板中的内容和控件。
也就是说Panel是ASP.NET对Form的一个补充,可以给表单分区域的控件,这也是为什么ASP.NET AJAX容器使用该控件的原因。
我们都知道,ASPX只能有一个runat=“server”的FORM表单,那么要进行细致,具体的FORM操作怎么办,那么就得靠Panel控件
这里,我们就会用到Panel的这个功能
将一组输入框和按钮放在一个Panel中,指定该Panel的DefaultButton属性为按钮ID,这样,当用户焦点处于这个Panel内的某一控件时,点击回车就会执行这个Panel的DefaultButton所指定的按钮。
Panel是Form的补充控制,可以通过使用Panel对表单进行更多的操作,这样,ASP.NET只能拥有一个Form所引起的一些困难都可以迎刃而解。
原文 http://blog.sina.com.cn/s/blog_568e662301018n2i.html
asp.net中按钮回车事件(转自http://www.cnblogs.com/adinet/archive/2013/03/03/2941424.html)的更多相关文章
- JS中的prototype(原文地址:http://www.cnblogs.com/yjf512/archive/2011/06/03/2071914.html)
JS中的phototype是JS中比较难理解的一个部分 本文基于下面几个知识点: 1 原型法设计模式 在.Net中可以使用clone()来实现原型法 原型法的主要思想是,现在有1个类A,我想要创建一个 ...
- angularjs中响应回车事件
下面这个示例在输入框键入回车键或者点击按钮时,将输入框的值置为"Hello World!":(黄色背景内容为响应回车事件涉及到的代码) <html ng-app=" ...
- php 模拟 asp.net webFrom 按钮提交事件
由于公司需要php方面的项目开发,php刚刚入门,在写按钮提交过程中,asp.net里的按钮事件更好些.先看下面的代码, <? require_once '../inc/EventHelper. ...
- webform中按钮触发事件顺序
执行顺序 先执行js端的方法,后执行后台的方法 一般js端方法用做数据的校验,校验成功 return true;后才执行后台的方法. 示例 <asp:Button runat="ser ...
- asp.net 给按钮 增加事件
一个页面,有查询,审核,删除,取消审核 按钮,每次结尾 处都要 调用 Initdata方法,重新刷新数据 繁琐哇,我的解决方法是 protected void Page_Load(object sen ...
- vuejs中的回车事件
@keyup.enter.native="事件名称"
- XPath语法 在C#中使用XPath示例 【转http://www.cnblogs.com/yukaizhao/archive/2011/07/25/xpath.html】非常详细的文章
XPath语法 在C#中使用XPath示例 XPath可以快速定位到Xml中的节点或者属性.XPath语法很简单,但是强大够用,它也是使用xslt的基础知识. 示例Xml: <?xml ve ...
- TinyMCE(富文本编辑器)在Asp.Net中的使用方法
TinyMCE(富文本编辑器)在Asp.Net中的使用方法 转至:http://www.cnblogs.com/freeliver54/archive/2013/02/28/2936506.htm ...
- oracle中去掉回车换行空格的方法详解
函数: 1.translate语法:TRANSLATE(char, from, to)用法:返回将出现在from中的每个字符替换为to中的相应字符以后的字符串. 若from比to ...
随机推荐
- PS中的图像知识
图像处理对于前端工作来说是一个不能回避的问题,ps技术也是我们必备的技能.用法可以在使用中不断的熟练,但针对前端技术本身的一些知识点,需要我们平时不断的积累才能够在使用中不出现问题. 如今的办公,已经 ...
- php捕捉来自搜索引擎的用户IP地址时间和访问路径
刚才看demo看到很有意思的地方记录一下 $zz_page=$_SERVER['REQUEST_URI']; $zz_name=$_SERVER['HTTP_USER_AGENT']; $zz_ip= ...
- 关于vue.js中class与style绑定的学习
练习代码: html: <!DOCTYPE html><html lang="en"><head> <meta charset=" ...
- JS 中通过对象关联实现『继承』
JS 中继承其实是种委托,而不是传统面向对象中的复制父类到子类,只是通过原型链将要做的事委托给父类. 下面介绍通过对象关联来实现『继承』的方法: Foo = { // 需要提供一个 init 方法来初 ...
- LINUX测试环境部署nginx(五)
安装配置nginx 安装编译环境:yum -y install pcre-devel openssl openssl-devel 拷贝nginx压缩文件到目标目录后,解压tar -zxvf nginx ...
- C# Redis Server分布式缓存编程 --网络转载
这篇文章我将介绍如果用最简洁的方式配置Redis Server, 以及如何使用C#和它交互编程 一. 背景介绍 Redis是最快的key-value分布式缓存之一 缺点: 没有本地数据缓冲, 目前还没 ...
- Python-Mac 安装 PyQt4
环境: 系统: OS X 10.11.4 Python: 2.7.10 1.安装 Qt brew install qt 测试安装结果,需要正确找到 qmake 的路径 qmake 2.安装 SIP 下 ...
- Window.Open详解
文章来源:http://www.cnblogs.com/stswordman/archive/2006/06/02/415853.html 一.window.open()支持环境:JavaScript ...
- 症状解决,原因不详的用非默认管理权限账户登录COM注册成功但找不到类型问题
http://social.msdn.microsoft.com/Forums/en-US/11f01ceb-52a4-438f-b7ef-727ce7a3e191/atl-project-in-vs ...
- 【转】error while loading shared libraries: libevent-2.0.so.5: cannot open shared object file: No such file or directory
错误信息: /usr/local/memcacheq/bin/memcacheq: error while loading shared libraries: libevent-2.0.so.5: c ...