将自定义规则添加到jquery验证以检查唯一用户名

时间:2012-10-18 08:45:11

标签: jquery validation

我正在尝试添加自定义规则以检查我的jquery验证函数中的用户名的唯一性,但它不会返回任何结果。当我警告msg变量时,它会正确警报。

这是我的代码:

jQuery(document).ready(function() {
    var validator = $("#frmregister").validate({
        rules: {
            "txtName":"required",
            txtuName: {
                required:true,
                usernameCheck:true    // remote check for duplicate username
            },
        },
        messages: {
            txtuName:{
                required:"Please enter User name",
                usernameCheck:"this username is already in use."
            },
        },
        highlight: function( element, errorClass, validClass ) {
            $(element).removeClass(validClass);
        },
        errorElement: 'div'
    });
});

jQuery.validator.addMethod('usernameCheck', function(txtuName) {
    var burl=$("#bseurl").val();

    //alert(burl);
    var postURL = burl+"home/usernamechk";
    //alert(postURL);
    var cnt = $("#frmregister").serialize();

   jQuery.ajax({
      type: "POST",
      data: cnt,
      url: postURL,
      success: function(msg) {
          result = (msg== 2) ? true : false;
      }
      return result;
   });
}, '');

1 个答案:

答案 0 :(得分:1)

这看起来不像有效的Javascript语法。 return result位于对象内。但真正的问题是AJAX是异步的,因此验证器方法返回时无需等待AJAX​​的结果。

jquery-validate提供了一个remote:验证方法,负责等待响应。服务器只需返回true或false作为JSON。