asp.net webform中submit按钮使用不当很容易犯的一个错误
2011-03-31 16:36
295 查看
webform中默认一个页面只能有一个form,有时submit按钮使用不当会产生一些奇怪的问题。
比如这是一个网站的头部搜索部分,前端人员把“搜索”按钮用<input type="submit" />处理,然后在js中文本框里按下回车键时,自动调用doSearch()函数,该函数可能类似下面这样:(只是表达一下大概的意思)
function doSearch(){
window.location="search.aspx?w=abc";
return false;
}
“搜索”按钮的click事件中,用类似 onClick="doSearch()"来处理,本来这样处理也没什么不对,不管是在文本框中按下回车,还是点击“搜索”按钮都是ok的。但是如果遇到下面的情况,且二部分功能是不同的程序员来写时,就可能出问题:
另一个前端开发人员把“登录模块”加进来以后(注:“登录”按钮用的是服务端Button控件,即最终在html中也是submit按钮,单独点击“登录”按钮时,一切正常),但是在一个form中,在任何一个文本框上按下回车键时,相当于默认点击了第一个submit按钮(即提交表单),这样在登录过程中,当用户输入完邮箱、密码、验证码,按下回车键的时候,实际上会触发“搜索”按钮的click行为,而搜索按钮在上面的处理中,调用的是doSearch()方法,最终页面会引导到搜索页上,并未按原来的意图提交,导致登录不了。
“各自单独的模块”独立测试时都是正常的,但是整合在一起就容易出问题了,所以说这种错误容易犯,我的建议是对于webform中的开发,不是必须要submit的场景,尽量避免用submit按钮。
比如这是一个网站的头部搜索部分,前端人员把“搜索”按钮用<input type="submit" />处理,然后在js中文本框里按下回车键时,自动调用doSearch()函数,该函数可能类似下面这样:(只是表达一下大概的意思)
function doSearch(){
window.location="search.aspx?w=abc";
return false;
}
“搜索”按钮的click事件中,用类似 onClick="doSearch()"来处理,本来这样处理也没什么不对,不管是在文本框中按下回车,还是点击“搜索”按钮都是ok的。但是如果遇到下面的情况,且二部分功能是不同的程序员来写时,就可能出问题:
另一个前端开发人员把“登录模块”加进来以后(注:“登录”按钮用的是服务端Button控件,即最终在html中也是submit按钮,单独点击“登录”按钮时,一切正常),但是在一个form中,在任何一个文本框上按下回车键时,相当于默认点击了第一个submit按钮(即提交表单),这样在登录过程中,当用户输入完邮箱、密码、验证码,按下回车键的时候,实际上会触发“搜索”按钮的click行为,而搜索按钮在上面的处理中,调用的是doSearch()方法,最终页面会引导到搜索页上,并未按原来的意图提交,导致登录不了。
“各自单独的模块”独立测试时都是正常的,但是整合在一起就容易出问题了,所以说这种错误容易犯,我的建议是对于webform中的开发,不是必须要submit的场景,尽量避免用submit按钮。
相关文章推荐
- 使用CSS给ASP.NET中的Button按钮添加一个指定位置的图片
- Asp.net 打开页面错误 (无法显示 XML 页。使用 XSL 样式表无法查看 XML 输入。请更正错误然后单击 刷新按钮,或以后重试。)
- asp.net访问access 发生了未处理的异常 "操作必须使用一个可更新的查询"错误
- asp.net中使用access数据源时出现至少一个参数没有被指定值的错误
- asp.net下的“Eval()、XPath() 和 Bind() 这类数据绑定方法只能在数据绑定控件的上下文中使用。”错误的一个可能的成因
- Asp.net MVC 限制一个方法到指定的Submit按钮
- 一个窗口里包含一个iframe,点击iframe内的submit按钮,返回的视图总是显示在iframe中,我想要的效果是点击按钮后返回的视图是在浏览器窗口中...?asp.net mvc 的action中,不用js怎么实现??????????
- asp.net中按钮的后台点击事件怎样才能打开一个对话框?(ext中的window)
- ASP.NET使用表单验证在注销后使得浏览器后退按钮失效的简单方法
- 认识 ASP.NET 3.5 MVC 路由 在WebForm项目中使用路由
- jQuery validate在Asp.Net WebForm中容易被犯的错误
- asp.net identity 2.2.0 在WebForm下的角色启用和基本使用(二)
- asp.net使用ajaxtoolkit发生的错误
- Ext.Net学习笔记01:在ASP.NET WebForm中使用Ext.Net
- 如何同一时间一个帐号只有一个用户使用?(asp.net)
- Asp.net Webform 使用Repository模式实现CRUD操作代码生成工具
- ASP.NET MV框架下使用ajax上传要注意的一个问题
- 最近使用asp.net时遇到 "运行时错误" 解决方案
- 一个Asp.net Theme的示例站点(可马上使用到项目中)
- ASP.NET WebForm_DoPostBackWithOptions 未定义错误 和 ASP.NET AJAX 客户框架无法加载错误