0

我正在尝试添加一个自定义规则来检查我的 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;
   });
}, '');
4

1 回答 1

1

这看起来不像是有效的 Javascript 语法。return result是在一个物体里面。但真正的问题是 AJAX 是异步的,因此验证器方法返回时无需等待 AJAX 的结果。

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

于 2012-10-18T09:03:41.293 回答