我在cakephp中使用了formhelper
echo $this->Form->input('birth_dt', array( 'label' => 'Date of birth'));
我发现2月份的那天是“31”...... 这是一个错误吗?因为没有2月31日那样的东西
答案 0 :(得分:1)
就像JohnP所说,它不会根据月份值更改下拉列表。我的意思是 - 您可以在项目中使用FormHelper
而不使用任何Javascript - 那么它怎么会这样做呢?
但这将是一个相当酷的功能。使用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>
答案 1 :(得分:0)
你在谈论下拉对吗?好吧,4月31日也没有这样的事情:)
下拉列表只会生成给定范围的所有适用日期的列表。它不会更改取决于所选月份的值。所以不,这不是一个错误。
答案 2 :(得分:0)
就像其他人所说的那样,下拉列表是静态的,而不是月份特定的。您应该在使用之前验证日期,因此您只需添加验证规则即可告知用户是否选择了无效组合。