jquery.validate遇到的问题

场景:jquery.validate插件做表单验证。

操作:addmethod添加一个验证规则,判断用户名是否重复。该规则需要用ajax向服务器查询结果。

问题:

1. 不管用户名是否存在,总是返回false, 因此总是显示错误信息。

---该问题是由于ajax请求时未设置同步导致的。应该加上    async: false,或者用$.ajaxSetup({ async : false }); 和$.ajaxSetup({ async : true }); 

$.ajaxSetup({ async : false });
$.get(url, function(data){
        
                if(data==(value+"exist"))
                {
                      result = false;
                }
                else if(data==(value+"OK"))
                {
           result = true;
                }
        
            });

$.ajaxSetup({ async : true });

或者

$.ajax({
      url: url,
      type: 'POST',
      async: false,
      success: function(data) {
        if(data==(value+"exist"))
                {
                      result = false;
                }
                else if(data==(value+"OK"))
                {
           result = true;
                }

      }
    });

2.  addmethod 中ajax请求能返回正确结果了,但是又发现不存在的用户名在注册提交成功时总是会有“用户名已经存在”的错误信息出现。用fierbug 发现用户名被验证了两次。

置均原来jquery.validate中onsubmit,onfocusout,onkeyup默认设为true。一般在用户提交表单前验证,而onsubmit在提交时又验证一次。第一次验证不存在的用户名不存在,但提交完成后,该用户名已经被注册了,所以再次验证就会显示错误提示。只要将onsubmit设为false即可。

验证时机:

jquery.validate可以很方便的设置在什么时候触发验证动作
onsubmit: 提交时是否验证
$(".selector").validate({
onsubmit: false
})

onfocusout: 失去焦点时验证(checkboxes/radio除外)
$(".selector").validate({
onfocusout: false
})

onkeyup: 在keyup时验证
$(".selector").validate({
onkeyup: false
})

onclick: 在checkboxes、radio点击时验证.
$(".selector").validate({
onclick: false
})


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值