当前位置:跳过导航链接计算机毕业设计首页 : 技术应用 : 详细内容

ASP.NET提交数据时防止数据提交重复的方法

来源:本站原创 作者:管理员 添加时间:2011-08-22 点击数:1644

防止表单重复提交的实现方法! 
  我们做添加信息页面的时候经常会遇到这样的问题,用户有时候会重复的点击提交按钮(实际上测试人员经常这样干),会导致多次提交,产生重复数据,我们总是要写一段代码要在表单提交后把提交按钮设置disibled=true,这样的代码写了好几处。 
  
  初步想法是通过attachEvent在form的onsubmit事件中挂一个方法,每次触发该事件的时候都调用我们定义的方法,我们可以给form增加一个submited属性,每次判断这个属性,为false的时候继续提交表单并且设置form.submited=true,反之说明表单已经提交,就不再表单。

接下来,遇到了一些麻烦: 
提交表单有三种方式(我目前用过的,就这三种)

1.submit按钮
2.当form中只有一个文本本框按回车的时候
3.自己写脚本提交


前两种是可以触发 onsubmit事件的,但是第三种不会。

显然,仅仅捕获onsubmit事件时不行的,还必须在form的submit方法执行前,判断表单是否在提交。
看看下面的代码,我们就明白了。

  //修改当前页面所有表单的提交事件
  function $setFormCheckSubmited()
  {
  var frms=document.forms;
  for(var i=0;i  {
  frms[i].baseSubmit = frms[i].submit;//保存表单原来的submit 方法
  frms[i].submited = false;//添加一个submited属性,并且设置其为false
  frms[i].submit = new Function("$submitForm(this)");//
  $addElementEventHandler(frms[i],"onsubmit","$submitForm(document.forms["+i+"])");
  }
  }
   
  //提交一个表单,如果当前表单已经提交,按么就不会继续提交该表单
  function $submitForm(frm)
  {
  if (frm.submited) return false;
  frm.submited=true;
  frm.baseSubmit();
  }
 
 
  //下面是addElementEventHandler的实现
 
  /*
  添加一个方法到到一个对象的一个的一个事件中
  element 要设置的对象  
  eventName 事件名称, 字符串类型的。
  methodName表示函数名称,字符串类型的。
  */
  function $addElementEventHandler(element,eventName,methodName)
  {
  if (document.all)
  {
  element.attachEvent(eventName,new Function(methodName));
  }
  else
  {
  if (eventName.substring(0,2)=="on") eventName=eventName.substring(2);//firefox中所有的事件名称前面是没有on的。
  element.addEventListener(eventName,new Function(methodName));
  }
  }

<责任编辑:计算机毕业设计网(http://www.xiaoniu168.com)>

第1页

【联系方式】

【本站信誉】

用心做计算机毕业设计论文网