ASP.NET基于Ajax的Enter键提交问题分析
本文实例讲述了ASP.NET基于Ajax的Enter键提交。分享给大家供大家参考,具体如下:
近日遇到一个Enter键的问题,总结下:
1.首先复习下htmlform对Enter的响应,不同的浏览器对Enter的处理略有不同,这里采用IE7
A.htmlform只有一个TextBox,没有submit按钮,点Enter提交form.
B.>1个TextBox,没有submit按钮,点Enter,form没有响应。
C.页面有一个(或多个)submit按钮,点Enter,触发第一个submit按钮click。
2.ASP.NET中的Enter键
ASP.NET2.0在form上提供了defaultbutton属性。
<formid="form"runat="server"defaultbutton="dummyDefaultBtn">
3.Masterpage下的defaultbutton.
在page中Page_Load中设置
protectedvoidPage_Load(objectsender,EventArgse) { 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方法。
<formname="aspnetForm"method="post"action=""onsubmit="javascript:returnWebForm_OnSubmit();"onkeypress="javascript:returnWebForm_FireDefaultButton(event,'<yourbtnID>')"id="aspnetForm">
WebForm_FireDefaultButton的实现:
var__defaultFired=false; functionWebForm_FireDefaultButton(event,target){ if(!__defaultFired&&event.keyCode==13&&!(event.srcElement&&(event.srcElement.tagName.toLowerCase()=="textarea"))){ vardefaultButton; 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(); returnfalse; } } returntrue; }
B.问题是Ajax中js变量__defaultFired不会更新回false,造成defaultbutton失效。
C.解决办法
不一而同,自己设置
__defaultFired=false;
希望本文所述对大家asp.net序设计有所帮助。