Cakephpでフォームヘルパーを使用しました
echo $this->Form->input('birth_dt', array( 'label' => 'Date of birth'));
2 月の「31」という日を見つけました... これはバグですか? 2月31日なんてないから
Cakephpでフォームヘルパーを使用しました
echo $this->Form->input('birth_dt', array( 'label' => 'Date of birth'));
2 月の「31」という日を見つけました... これはバグですか? 2月31日なんてないから
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>
他の人が言ったように、ドロップダウンは静的であり、月固有ではありません. いずれにせよ、日付を使用する前に検証する必要があるため、検証ルールを追加して、ユーザーが無効な組み合わせを選択した場合に通知することができます。
ドロップダウンについて話しているのですか?まあ、4月31日というものもありません:)
ドロップダウンは、特定の範囲に適用可能なすべての日付のリストを生成するだけです。選択した月によって値が変わることはありません。いいえ、それはバグではありません。