2014-01-18 46 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/