2012-06-20 112 views
2

我想鏈接使用jQuery驗證兩個表單域。 用戶最多隻能輸入5年,但這分散在兩個輸入,幾個月和幾年。驗證月份/年與jquery驗證

我制定了以下我的感覺應該走到一起:

$('#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 
+0

在月份部分內複製「depends」函數有幫助嗎? –

回答

2

我想你可以使用下面的函數爲depends:屬性控制:

function(){ 
    return $('#years').val() * 12 + $('#months').val() * 1 <= 60; 
} 
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 
     } 
    } 
    } 
});