我用在CakePHP中的表单助手CakePHP中的表单助手“输入日期”错误?
echo $this->Form->input('birth_dt', array('label' => 'Date of birth'));
我发现天“31”在二月份... 这是一个错误?因为没有这样的事情,因为二月31
我用在CakePHP中的表单助手CakePHP中的表单助手“输入日期”错误?
echo $this->Form->input('birth_dt', array('label' => 'Date of birth'));
我发现天“31”在二月份... 这是一个错误?因为没有这样的事情,因为二月31
你说的是下拉权吗?那么,没有像4月31日那样的东西:)
下拉列表只会生成给定范围内所有可用日期的列表。它不会更改取决于所选月份的值。所以不,这不是一个错误。
就像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>
像其他人说,在下拉列表是静态的,而不是具体的一个月。在使用之前,您应该先验证日期,以便您可以添加验证规则,以通知用户是否选择了无效组合。