如何在异步提交form的时候利用jQuery validate实现表单验证

相信很多人都用过jquery validate插件,非常好用,并且可以通过下面的语句来自定义验证规则
 
    //电话号码验证     
      jQuery.validator.addMethod("isPhone", function(value, element){
            var tel =/^(\d{3,4}-?)?\d{7,9}(-?\d{1,4})?$/;     
            returnthis.optional(element) ||(tel.test(value));     
      },"请正确填写您的电话号码");

验证通过,表单提交。但我们常常会碰到这样的需求,当验证通过后,我不需要通过submitform的方式提交表单,我想要更灵活的通过ajax处理表单,加入很多动态的效果,提高客户体验,请看下面的例子:

有一个表单:
<form id="formId" action="">
      姓名:<input type="text"name="name">
      电话:<input type="text"name="phone">
      <input type="button" value="submit"οnclick="doSubmit();">
</form>
以下是JS:
function doSubmit() {
            validateForm();//调用验证方法
              //do something else...
  }
function validateForm() {
            varvalidator = $("#formId").validate({
                  errorElement: "em",
                  success:function(em) {
                        em.text("ok").addClass("success");//验证通过的动态CSS
                  },
                  submitHandler:function(){
             ajaxSubmitForm();
         },//这是关键的语句,配置这个参数后表单不会自动提交,验证通过之后会去调用的方法
                  rules:{
                        name:{
                              required:true,
                              maxlength:100
                        },
                        phone:{
                              isPhone:true
                        }
                  },
                  messages:{
                        name:{
                              required:"请填写姓名",
                              maxlength:"姓名不超过100个字符"
                        }
                  }
            });
      }
function ajaxSubmitForm() {
            var para =;//组织参数
            var url ="/jajax/saveForm.do";
            $.ajax({
                  type:"post",
                  cache:false,
                  dataType:"json",
                  url:url,
                  data:para,
                  beforeSend:function(XMLHttpRequest){
                        //dosomething before submit...
                  },
                  success:function(data, textStatus){
                        //dosomething after submited...
                  },
                  complete:function(XMLHttpRequest, textStatus){
                        //dosomething in the end...
                  }
            });
      }

这样就非常灵活的完成了表单的验证和提交,其中很多时间节点都由我们自由的控制,加入任意你想做的事,是不是很方便呢...

转载自: http://blog.sina.com.cn/s/blog_64852bef0100vkaf.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
灵活好用的jq表单验证,自己封装可按照验证需求添加验证方法,不需要修改验证整体结构,内含使用说明。 var arr = new Array(); /* */ //用户验证 arr[0] = new XQValidation(); arr[0].XChecksetcont("3-12长度,字母,数字,下划线", "", "表单不能为空", "验证失败", "此用户已存在", "此用户可以注册"); arr[0].posturl("/FormValidation/ajax/ajax-validation.asmx/user_isNull", "name"); arr[0].check("tname", "td1", "checkusername", true, true); //密码验证 arr[1] = new XQValidation(); arr[1].XChecksetcont("6-20长度,字母,数字,和其他符号", "ok", "表单不能为空", "wrong", "表单不能为空"); arr[1].check("tpass", "td2", "checkpassword", true, false); //邮箱验证 arr[2] = new XQValidation(); arr[2].XChecksetcont("正确邮箱", "ok", "表单不能为空", "wrong"); arr[2].check("tmail", "td3", "checkemail", true, false); //联系方式验证 arr[3] = new XQValidation(); arr[3].XChecksetcont("正确手机,非必须", "ok", "表单不能为空", "wrong"); arr[3].check("tmobile", "td4", "checkcontactway", true, false); //QQ验证 arr[4] = new XQValidation(); arr[4].XChecksetcont("qq,非必须", "ok", "表单不能为空", "wrong"); arr[4].check("tqq", "td5", "checkqq", false, false); //验证验证 arr[5] = new XQValidation(); arr[5].XChecksetcont("", "ok", "表单不能为空", "wrong"); arr[5].check("tcode", "td6", "checknull", true, false); //重复密码验证 arr[6] = new XQValidation(); arr[6].XChecksetcont("", "", "表单不能为空", "密码不匹配"); arr[6].check("tapass", "td7", "checkpassword_", true, false); /* *summary:提交表单验证 */ function formok() { for (var i = 0; i < arr.length; i++) {//循环遍历验证对象 if (!arr[i].getstate()) { arr[i].alertwrong(); return false } } //判断两次输入的密码是否一样 if (!chkapass($("tapass").value)) { arr[6].alertwrong(); return false; } return true; }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值