2

jQuery 検証を使用して 2 つのフォーム フィールドをリンクしようとしています。ユーザーは 5 年までしか入力できませんが、これは月と年の 2 つの入力に分散されます。

私はそれがどのようにまとまるべきだと思うかを次のように考えました:

$('#leform')validate({
debug: true,
rules: {
    years : {
        required : {
            depends: function(element) {
                  var x = ($('#years').val() == 5) && ($('#months').val() == 0),
                      y = ($('#years').val() < 5),
                      z = (x || y);
                       return z;

                },
        number : true,
        max : 5,
        min : 0

        },
        months : {
            required : true,
            number : true,
            min: 0,  
            max: 11 
        }
 }
});

ユーザーは 3 年 6 か月と入力できますが、問題はありませんが、ユーザーが 5 年 4 か月と入力すると、検証が開始されません。何か案は?

--------編集/解決策---------

申し訳ありませんが、かなり新しいユーザー(長年の潜伏者)なので、質問を編集して回答を投稿する必要がありました

わかりましたので、仕様を誤解していたことがわかりました。「必須」はブール値の true または false のようです。

次のように検証を拡張しました。

jQuery.validator.addMethod("yearCount", function(value, element) {
   var x = ($('#years').val() == 5) && ($('#months').val() == 0),
   y = ($('#years').val() < 5),
   z = (x || y);
   return z;
}, "blah blah blah");

ルールを次のように更新しました。

required : true,
max : 5,
min : 0,
yearCount : true
4

2 に答える 2

2

両方のコントロールのdepends:プロパティに次の関数を使用できると思います。

function (){
    return $('#years').val() * 12 + $('#months').val() * 1 <= 60;
}
于 2012-06-20T11:48:20.563 に答える
0

これは役立つかもしれません:

$('#leform').validate({
  debug: true,
  rules: {
    years : {
      required : {
        depends: function(element) {
          return (($(element).val() == 5 && $('#months').val() == 0) || ($(element).val() < 5));
        },
        number : true,
        max : 5,
        min : 0

      },
      months : {
        required : true,
        number : true,
        min: 0,  
        max: 11 
      }
    }
  }
});
于 2012-06-20T11:59:28.640 に答える