2014-01-18 82 views
0

我正在使用註冊表單並使用jQuery驗證來檢查表單。我想驗證出生的那天,以便他們不能選擇例如二月的第31天。 我的代碼是:jQuery驗證依賴規則不起作用

birthday: { 
      required: true, 
      min: 1, 
      max: { 
      depends: function(element) { 
       switch (parseInt($('#birthmonth').val())){ 
        case 2: 
          maxday = 29; 
          break; 
        case 4: 
        case 6: 
        case 9: 
        case 11: 
          maxday = 30; 
          break; 
        default: 
          maxday = 31;         
       }             
       return maxday; 
       }} 
      }, 

switch工作,函數返回每個月的正確值,但仍確認無效的顯示選擇,即使我選擇的任何一個月,然後7天我試圖轉換回將值返回給字符串,但它仍然不起作用。

+0

這將是很好,如果你會包括一個完整的'.validate()'調用足夠的標記爲​​一個簡潔的演示......它減少工作量需要回答以及幫助未來的讀者瞭解你在做什麼。 – Sparky

回答

0

這會對你自定義的方法更好一點。使用the addMethod method創建新規則。

$(document).ready(function() { 

    $('#myform').validate({ 
     rules: { 
      birthday: { 
       required: true, 
       min: 1, 
       mymax: ['#birthmonth'] 
      } 
     } 
    }); 

    jQuery.validator.addMethod('mymax', function (value, element, params) { 
     switch (parseInt($(params[0]).val())) { 
      case 2: 
       maxday = 29; 
       break; 
      case 4: 
      case 6: 
      case 9: 
      case 11: 
       maxday = 30; 
       break; 
      default: 
       maxday = 31; 
     } 
     params[1] = maxday; // simply used for populating message at {1} 
     return parseInt(value) <= maxday; 
    }, "Please enter a value less than or equal to {1}"); 

}); 

工作演示:http://jsfiddle.net/4Uv8Y/