2

jQuery Validateドキュメントでは、リモート検証呼び出しを使用してサーバー側の検証スクリプト/リソースに追加の値を渡す例を示しています。

http://docs.jquery.com/Plugins/Validation/Methods/remote#code

サンプルコードは次のとおりです。

$("#myform").validate({
  rules: {
    email: {
      required: true,
      email: true,
      remote: {
        url: "check-email.php",
        type: "post",
        data: {
          username: function() {
            return $("#username").val();
          }
        }
      }
    }
  }
});

usernameデータパラメータを設定するために関数を使用する必要があるのはなぜですか?:

username: function() {
  return $("#username").val();
}

だけでなく:

username: $("#username").val()

私は両方の方法を試しましたが、2番目の方法では値が割り当てられないことを確認しましusername:た。

remoteメソッド関数のjQueryValidateコードにブレークポイントを設定しました。

remote: function(value, element, param) {
    ...
}

ここで何が起こっているのかを理解しようとしますが、私は本当に賢明ではありません。

4

1 に答える 1

4

jQuery.fn.validate(config)実際に検証を実行するのではなく、検証ルールを設定するために使用されます。{rules: /* */ }オブジェクト全体は、それが発生したときに正確に評価されます。


含める場合

$('#username').val()

ルールオブジェクトでは、その式がすぐに評価され、その時点での要素の値が保存されます。


代わりに合格した場合

function() { 
  return $('#username').val(); 
}

値として、この関数は、remoteバリデーターが呼び出され、AJAX呼び出しが行われたときに評価され、プロパティが文字列にjQuery.paramフラット化されます。data

このバリデーターは、構成オブジェクト全体をAJAX呼び出しごとにマージするため、通常のajax設定オブジェクトで受け入れられる他のすべてのオプションをこの方法で設定できますdata

于 2012-08-02T17:33:04.727 に答える