Форма помощника "ввод даты" ошибка в cakePHP? - PullRequest
0 голосов
/ 30 мая 2011

Я использовал formhelper в cakephp

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

Я нашел день "31" в феврале месяце ... это ошибка?потому что нет такой вещи, как 31 февраля

Ответы [ 3 ]

1 голос
/ 30 мая 2011

Точно так же, как сказал JohnP, он не изменит раскрывающийся список в зависимости от значения месяца.Я имею в виду - вы можете использовать FormHelper без какого-либо Javascript в вашем проекте - так как бы он все равно это сделал?

Это было бы довольно крутой функцией, хотя.С помощью jQuery или чего-либо еще вы можете прослушать выпадающие списки за месяц и год и изменить параметры выпадающего списка на основе значения месяца / года. cal_days_in_month () .Это не так сложно сделать, и я думаю, что это может быть включено в Cake 2.0 в качестве дополнительной функции FormHelper.Например, если у вас есть 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 голосов
/ 30 мая 2011

Как уже говорили другие, выпадающие списки статичны и не зависят от месяца.В любом случае вам следует проверить дату, прежде чем использовать ее, поэтому вы можете просто добавить правило проверки, чтобы информировать пользователя, если он выберет недопустимую комбинацию.

0 голосов
/ 30 мая 2011

Вы говорите о выпадающих правильно? Ну и 31 апреля тоже не бывает :)

Выпадающие списки просто генерируют список всех применимых дат для данного диапазона. Это не меняет значение в зависимости от выбранного месяца. Так что нет, это не ошибка.

...