问题描述
|
我已经在cakephp中使用了formhelper
echo $this->Form->input(\'birth_dt\',array( \'label\' => \'Date of birth\'));
我发现2月份的日期为“ 31” ...
这是一个错误吗?因为没有2月31日这样的事情
解决方法
就像JohnP所说的那样,它不会根据月份值更改下拉列表。我的意思是-您可以在项目中没有任何Javascript的情况下使用ѭ1-那么它将如何处理?
不过,这将是一个非常酷的功能。使用jQuery或其他方法,您可以收听月份和年份的下拉菜单,并根据月份/年份的值更改日期下拉菜单的选项。 cal_days_in_month()。这样做并不难,我想它可以作为FormHelper的附加功能包含在Cake 2.0中。如图所示,如果打开
JsHelper
,则可以使用它。
好吧,因为我有点无聊,所以我写了这段this3ѭ代码:
<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>
, 您是在说下拉菜单吗?好吧,也没有4月31日这样的事情:)
下拉列表仅生成给定范围内所有适用日期的列表。它不会根据所选月份更改值。所以不,这不是错误。
, 就像其他人所说的那样,下拉列表是静态的,而不是特定月份的。无论如何,您都应该在使用日期之前对其进行验证,因此您可以添加验证规则以通知用户是否选择了无效的组合。