2

我正在尝试使用 jQuery 验证链接两个表单字段。用户最多只能输入 5 年,但这分布在两个输入中,月和年。

我已经制定了以下我认为应该如何组合在一起的方法:

$('#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 个月时,我无法触发验证。有任何想法吗?

-------- 编辑/解决方案 ---------

对不起,我是一个相当新的用户(长期潜伏者)所以不得不编辑问题来发布答案

好的,事实证明我误解了规范,看起来“必需”是布尔值的真假。

我使用以下内容扩展了验证:

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 回答