ASP.NET基于Ajax的Enter键提交问题分析
程序员文章站
2023-12-18 16:15:58
本文实例讲述了asp.net基于ajax的enter键提交。分享给大家供大家参考,具体如下:
近日遇到一个enter键的问题,总结下:
1. 首先复习下html for...
本文实例讲述了asp.net基于ajax的enter键提交。分享给大家供大家参考,具体如下:
近日遇到一个enter键的问题,总结下:
1. 首先复习下html form对enter的响应,不同的浏览器对enter的处理略有不同,这里采用ie7
a. html form只有一个textbox, 没有submit按钮, 点enter 提交form.
b. >1个textbox, 没有submit按钮, 点enter ,form没有响应。
c. 页面有一个(或多个)submit按钮, 点enter, 触发第一个submit 按钮click。
2. asp.net 中的enter键
asp.net 2.0在form上提供了defaultbutton属性。
复制代码 代码如下:
<form id="form" runat="server" defaultbutton="dummydefaultbtn">
3. master page下的defaultbutton.
在page中page_load中设置
protected void page_load(object sender, eventargs e) { if (!this.page.ispostback) { this.page.master.page.form.defaultbutton = this.btnsave.uniqueid;
4. ajax下的defaultbutton
ajax的局部刷新破坏了defaultbutton的实现。
a. asp.net的defaultbutton的实现。
在html中添加webform_firedefaultbutton方法。
复制代码 代码如下:
<form name="aspnetform" method="post" action="" onsubmit="javascript:return webform_onsubmit();" onkeypress="javascript:return webform_firedefaultbutton(event, '<your btnid>')" id="aspnetform">
webform_firedefaultbutton的实现:
var __defaultfired = false; function webform_firedefaultbutton(event, target) { if (!__defaultfired && event.keycode == 13 && !(event.srcelement && (event.srcelement.tagname.tolowercase() == "textarea"))) { var defaultbutton; if (__nonmsdombrowser) { defaultbutton = document.getelementbyid(target); } else { defaultbutton = document.all[target]; } if (defaultbutton && typeof(defaultbutton.click) != "undefined") { __defaultfired = true; defaultbutton.click(); event.cancelbubble = true; if (event.stoppropagation) event.stoppropagation(); return false; } } return true; }
b. 问题是ajax中js变量 __defaultfired 不会更新回false,造成default button失效。
c. 解决办法
不一而同,自己设置
复制代码 代码如下:
__defaultfired=false;
希望本文所述对大家asp.net序设计有所帮助。