jQuery UI の datepicker、キー入力と併用


jQuery UI の datepickerで、キー入力による入力可能にする

ステップ1、Hidden項目を追加する

<!-- 日付テキスト項目 -->
<input type="text" id="datepickerDisplay" />
<!-- Hidden項目 -->
<input type="hidden" id="datepickerDisplayHidden" />

ステップ2、onSelectを以下のように改修。

/**********************************************************************************
 * datePicker設定
 **********************************************************************************/
$('#datepickerDisplay').datepicker({
    // 日付選択イベント
    onSelect: function(date) {
        var momentDate = moment($('#datepickerDisplay').val());
        // 入力した日付が有効ではない場合
        if (!momentDate.isValid()) {
            return;
        }
        var datepickerVal = momentDate.format("YYYY/MM/DD");
        var datepickerValBK = $('#datepickerDisplayHidden').val();
        // Hidden項目で保持した日付と一致しない場合
        if (new Date(datepickerVal).getTime() != new Date(datepickerValBK).getTime()) {
            date = datepickerVal;
            $('#datepickerDisplay').val(datepickerVal);
        }
        // HIDDEN項目に日付を保持
        $('#datepickerDisplayHidden').val(date);
    }
});