使用jquery验证验证月/年

时间:2012-06-20 11:33:59

标签: jquery validation jquery-validate

我正在尝试使用jQuery validate链接两个表单字段。 用户最多只能输入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个月时我无法获得验证。有什么想法吗?

-------- EDIT / SOLUTION ---------

对不起我是一个非常新的用户(长时间潜伏)所以不得不编辑问题以发布答案

好吧事实证明我错误解释了规范,看起来“required”是一个布尔值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

2 个答案:

答案 0 :(得分:2)

我认为您可以对两个控件的depends:属性使用以下函数:

function (){
    return $('#years').val() * 12 + $('#months').val() * 1 <= 60;
}

答案 1 :(得分: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 
      }
    }
  }
});