2011-01-14 6 views
7

jquery validationプラグインを使用しています。jQueryを使用したAjax検証?

私のフォームでは、ニックネームが既に使用されているかどうかを確認する必要があります。

そのため、彼らはremoteのajaxコールを発信しています。私の場合、ajaxコールは を正しく処理してtrueまたはfalseを返しています。しかし、返された値がfalseであっても許可するのは です。

私の検証コードのように見える、

$(function() { 
    $("#myform").validate({ 
     rules: { 
      fullName: { 
       required: true, 
       minlength: 5 
      }, 
      nickName: { 
       required: true, 
       minlength: 4, 
       alphaNumeric: true, 
       remote: { 
        url: "NickNameChecker", 
        type: "post", 
        data: { 
         nickName: function() { 
         return $("#nickName").val(); 
        }}, 
        success: function(data) { 
         return data; 
        } 
       } 
      } 
     }, 
     messages: { 
      fullName: { 
       required: "Please Enter Your Full Name.", 
       minlength: "Full Name should have minimum 5 letters." 
      }, 
      nickName: { 
       required: true, 
       minlength: "Nick Name should contain minimum 4 letters.", 
       remote: "This nickname is already in use." 
      } 
     } 
    }); 
}); 

任意の提案を感謝することでしょう!

ありがとうございます!

ソリューション:

ソリューションは唯一の私のコードです。

私は成功の部分を削除して試しました。その素晴らしい作業!

+1

リモートページからの戻り値は何ですか? – Chandu

+0

@Cyber​​nate:ニックネームが使用されていない場合はtrue、それ以外の場合はfalseです。 –

+3

@TamilVendhan: 'remote'オプションの専門家ではありませんが、見つけられた例はどれも' success'オプションが指定されていませんでした。 –

答えて

1

(上記のコメントから拡張解説)

successオプションは、jQueryの検証のリモート検証のために有効ではありません。あなたは真またはfalsy値/エラーメッセージを返す検証にアクセスするためのURLを指定することができるはずです。

サーバー側のリソースが $アヤックス(XMLHttpRequestを)経由で呼び出さ及び キー/値を取得しています有効な要素の名前の に対応し、GETパラメータとしての の値に対応します。応答 はJSONとして評価され、正当な要素の場合は である必要があります。無効な 要素の場合は false、undefinedまたはnullのいずれかになります。 または文字列

オプションの使用方法の詳細については、documentation for remoteを参照してください。あなたのコードは、おそらくこのようになります:

$(function() { 
    $("#myform").validate({ 
     rules: { 
      fullName: { 
       required: true, 
       minlength: 5 
      }, 
      nickName: { 
       required: true, 
       minlength: 4, 
       alphaNumeric: true, 
       remote: { 
        url: "NickNameChecker", 
        type: "post", 
        data: { 
         nickName: function() { 
         return $("#nickName").val(); 
        } 
       } 
      } 
     }, 
     messages: { 
      fullName: { 
       required: "Please Enter Your Full Name.", 
       minlength: "Full Name should have minimum 5 letters." 
      }, 
      nickName: { 
       required: true, 
       minlength: "Nick Name should contain minimum 4 letters.", 
       remote: "This nickname is already in use." 
      } 
     } 
    }); 
}); 
0

jQueryの検証チームは、非ブールのAPI in this GitHub issueを処理するための別の方法を助言しました。

提案されたメソッドはjQuery.ajax()のdataFilterプロパティを利用します。

form.validate({ 
    rules: { 
     username: { 
      required: true, 
      remote: { 
       url: "users2.json.php", 
       dataFilter: function(data) { 
        var json = JSON.parse(data); 
        if(json.status === "success") { 
         return '"true"'; 
        } 
        return "\"" + json.error + "\""; 
       } 
      } 
     } 
    } 
}); 
関連する問題