2011-05-30 65 views

回答

0

你说的是下拉权吗?那么,没有像4月31日那样的东西:)

下拉列表只会生成给定范围内所有可用日期的列表。它不会更改取决于所选月份的值。所以不,这不是一个错误。

1

就像JohnP说的那样,它不会根据月份值更改下拉菜单。我的意思是 - 你可以在你的项目中使用没有任何Javascript的FormHelper - 那么它会怎么做呢?

虽然这将是一个相当酷的功能。通过使用jQuery或其他方法,您可以听取月份和年份下拉菜单,并根据月份/年份值更改当天下拉菜单的选项。 cal_days_in_month()。不是很难做到,我想它可以作为FormHelper的附加功能包含在Cake 2.0中。如在,如果你有JsHelper上 - 你可以使用它。

好,只是因为我有点无聊,我写了这片jQuery代码:

<script type="text/javascript"> 
$().ready(function() 
    { 
    $('#ModelFieldMonth, #ModelFieldYear').change(function() 
    { 
    var day = $('#ModelFieldDay').val(); 
    var month = $('#ModelFieldMonth').val(); 
    var year = $('#ModelFieldYear').val(); 

    var days_in_month = new Array(); 
    days_in_month['01'] = 31; days_in_month['02'] = 28; days_in_month['03'] = 31; days_in_month['04'] = 30; days_in_month['05'] = 31; days_in_month['06'] = 30; 
    days_in_month['07'] = 31; days_in_month['08'] = 31; days_in_month['09'] = 30; days_in_month['10'] = 31; days_in_month['11'] = 30; days_in_month['12'] = 31; 
    if (year % 4 == 0) { days_in_month['02'] = 29; } // if leap year 

    $('#ModelFieldDay').find('option').remove(); 
    var i = 0; 
    for (i = 1; i <= days_in_month[month]; i++) 
     { 
     $('#ModelFieldDay').append('<option value="'+i+'">'+i+'</option>') 
     } 
    $('#ModelFieldDay').val(day); 
    }); 
    }); 
</script> 
0

像其他人说,在下拉列表是静态的,而不是具体的一个月。在使用之前,您应该先验证日期,以便您可以添加验证规则,以通知用户是否选择了无效组合。