2017-05-03 22 views
1

我创建了一个jQuery自定义验证这样Jquery自定义验证器 - 检查一个值是否有效?

 var response; 
    $.validator.addMethod(
     "uniqueUserName", 
     function (value, element) { 

      $.ajax({ 
       type: "POST", 
       url: "/umbraco/surface/MemberShipSurface/ValidatePostCode", 
       data: JSON.stringify({ PostCode: value }), 
       contentType: "application/json; charset=utf-8", 
       success: function (msg) { 
        alert(msg.istrue); 
        response = msg.istrue; 

       } 
      }); 
      return response; 
     }, 

     "wrong postcode" 
    ); 
    $("#reg-form").validate({ 
    rules: { 
     day: { 
      required: true, 
      range: [01, 31] 
     }, 
     PostCode: { 
      required: true, 
      number: true, 
      maxlength: 4, 
      minlength: 4, 
      uniqueUserName: true 
     } 
    }, 

    errorElement: "span", 

    submitHandler: function (form) {  
    } 
}); 

如果从阿贾克斯输出是事实,就意味着验证是成功的,我们不需要显示任何错误信息显示其他错误信息。但是现在,我首先从表单上输入了什么价值,然后从第二次开始显示验证成功。任何人都可以指出我在这里做错了吗?

+0

声明这个'无功响应=假;' – vel

回答

1

remote-method可用,你可以使用它像,

rules: { 
    day: { 
     required: true, 
     range: [01, 31] 
    },    
    PostCode: { 
     required: true, 
     number: true, 
     maxlength: 4, 
     minlength: 4, 
     remote: { 
     url: "/umbraco/surface/MemberShipSurface/ValidatePostCode", 
     type: "post", 
     data: { 
      PostCode: function() { 
      return $("#PostCode").val(); 
      } 
     } 
     } 
    } 
} 

如果要使用自定义的方法,然后在$.ajax()调用中使用async=false

var response=false; 
$.ajax({ 
    type: "POST", 
    async:false,// now it will wait until you get response 
    url: "/umbraco/surface/MemberShipSurface/ValidatePostCode", 
    data: JSON.stringify({ PostCode: value }), 
    contentType: "application/json; charset=utf-8", 
    success: function (msg) { 
     response = msg.istrue; 
    } 
}); 
return response; 
+0

这个代码不表示什么都数据我进入你'msg.istrue'正在返回 – Athul

+0

什么值的错误信息? –

1

尝试。

var response= false; 
    $.validator.addMethod(
     "uniqueUserName", 
     function (value, element) { 

      $.ajax({ 
       type: "POST", 
       url: "/umbraco/surface/MemberShipSurface/ValidatePostCode", 
       data: JSON.stringify({ PostCode: value }), 
       contentType: "application/json; charset=utf-8", 
       success: function (msg) { 
        alert(msg.istrue); 
        response = msg.istrue === "true" ? true : false; 

       } 
      }); 
      return response; 
     }, 

     "wrong postcode" 
    ); 
    $("#reg-form").validate({ 
     rules: { 
      day: { 
       required: true, 
       range: [01, 31] 
      }, 
      PostCode: { 
       required: true, 
       number: true, 
       maxlength: 4, 
       minlength: 4, 
       uniqueUserName: true 
      } 
     }, 

     errorElement: "span", 

     submitHandler: function (form) {  
     } 
    }); 
+0

不工作。同样的问题,我上面说过再次发生 – Athul

+0

whiat值msg.istrue? – vel

+0

如果数据是有效的然后是真的,如果数据是错误的假 – Athul