【问题标题】:Form helper "input date" bug in cakePHP?cakePHP 中的表单助手“输入日期”错误?
【发布时间】:2011-05-30 21:37:17
【问题描述】:

我在 cakephp 中使用了 formhelper

   echo $this->Form->input('birth_dt', array( 'label' => 'Date of birth'));

我发现二月份的“31”日... 这是一个错误吗?因为没有 2 月 31 日这样的事情

【问题讨论】:

    标签: cakephp date formhelper


    【解决方案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>
    

    【讨论】:

      【解决方案2】:

      你说的是下拉菜单吧?好吧,也没有 4 月 31 日这样的事情 :)

      下拉菜单仅生成给定范围内所有适用日期的列表。它不会根据所选月份更改值。所以不,这不是错误。

      【讨论】:

        【解决方案3】:

        正如其他人所说,下拉列表是静态的,而不是特定于月份的。无论如何,您都应该在使用日期之前对其进行验证,因此您只需添加一个验证规则来通知用户是否选择了无效的组合。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-04-22
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多