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 に答える