欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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序设计有所帮助。

上一篇:

下一篇: