表单验证 串行化

ajax验证与表单提交提示冲突问题解决

 (2009-09-18 10:11:54)
标签: 

杂谈

 
对于有些比较重要的业务规则进行验证是必不可少的.此时可能会有前台验证与后台验证
都要处理的情况.
    举例说,对于某个字段,前台必须验证数据库中是否存在同名的.一般的做法是当文本失
去焦点时,进行ajax验证.如果存在同名的,给出提示信息"XX已存在!".也就是验证文本框要
失去焦点,ajax验证请求才发出去.但如果是在点击提交按钮时触发的该事件情况就不一样
拉.此时ajax验证会触发,提交也会向服务器发出请求.由于服务器也做了验证,出现同名就
会抛出异常信息,并提示给前台界面显示.这时ajax出会返回提示信息.就会出现针对同一问
题出现两次验证的情况.
    之所以会出现这种情况,就是因为这两个请求不是串行处理的.没能监控到如果有一个
出现问题,另一个就不提示.所以说要解决该问题就必须让请求串行化.
    这里用到了一个比较重要的javascript函数setTimeout("aa();",3000);它会在3s后
执行aa函数.所以可以在ajax请求返回值做文章.设置一个returnValue = true;如果返
回的是错误信息就将它设为false;然后在提交方法中对returnValue做判断.如果为true
才提交表单请求.问题就解决拉!

示例代码
function submitForm(){
   var isPass=$(submitFormName).fireEvent("onSubmit");
   if(isPass){
      setTimeout("mySubmitForm();",3000);
   }
}
function mySubmitForm(){
   if(设置一个returnValue){
         //表单提交
    }
}

原文地址:https://www.cnblogs.com/guagua-join-1/p/8871655.html