jQuery UI Datepickerは便利ですよね。日付関連の入力で重宝しています。
今回は仕事でよく使っているjQuery UI Datepickerの機能を3つ紹介いたします。
目次
まずはベースのDatepickerを作る
まずはベースとなるHTMLとスクリプトを組みます。
jQuery本体とjQuery UI、Datepickerの日本語化ファイルを読み込みます。
<!-- jQuery本体--> <script src="http://code.jquery.com/jquery-3.2.1.min.js"></script> <!-- jQuery UI --> <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script> <!-- Datepicker日本語化 --> <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1/i18n/jquery.ui.datepicker-ja.min.js"></script> <!-- jQuery UI のCSS --> <link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/smoothness/jquery-ui.css">
続いてDatepickerを表示させるinputタグを入力します。
<input type="text" name="date" value="">
最後にDatepickerのスクリプトを記述します。
$("[name=date]").datepicker({
// YYYY-MM-DD形式で入力されるように設定
dateFormat: 'yy-mm-dd'
});
[btn class=”rich_pink”]デモ確認[/btn]
3つのよく使う機能
複数月を一気に表示
Datepickerで表示されるカレンダーは通常1つですが、複数表示させることも可能です。
パラメーターにnumberOfMonthsを追加して、表示したいカレンダー数を設定してください。
$("[name=date]").datepicker({
dateFormat: 'yy-mm-dd',
// カレンダーを3つ表示
numberOfMonths: 3,
});
[btn class=”rich_pink”]デモ確認[/btn]
最小日や最大日などの選択可能範囲の指定
yyyy年mm月dd日~yyyy年mm月dd日までの範囲の日付のみを選択可能にすることもできます。
minDateパラメータで最小日付を、maxDateで最大日付を設定します。
サンプルでは2017年08月15日~2017年10月15日の範囲の日付を選択可能にします。
$("[name=date]").datepicker({
dateFormat: 'yy-mm-dd',
// 2017-08-15以降を選択可能
minDate: new Date(2017, 8 - 1, 15),
// 2017-10-15まで選択可能
maxDate: new Date(2017, 10 - 1, 15),
});
[btn class=”rich_pink”]デモ確認[/btn]
現在の日付から○○日前~△△日後まで選択可能という設定もできます。
$("[name=date]").datepicker({
dateFormat: 'yy-mm-dd',
// 現在日時から7日前から選択可能
minDate: "-7d",
// 現在日時から10日後まで選択可能
maxDate: "+10d",
});
2つの入力ボックスで範囲指定
2つのテキストボックスを用意して、yyyy年mm月dd日~yyyy年mm月dd日という範囲指定も可能です。
まずテキストボックスを2つ作ります。
<input type="text" name="start">~ <input type="text" name="end">
続いてそれぞれのテキストボックスにDatepickerのスクリプトを設定します。
var format = 'yy-mm-dd';
// 開始日の設定
var start = $("[name=start]").datepicker({
dateFormat: 'yy-mm-dd'
}).on("change", function () {
// 開始日が選択されたとき
// 終了日の選択可能最小日を設定
end.datepicker("option", "minDate", getDate(this));
});
// 終了日の設定
var end = $("[name=end]").datepicker({
dateFormat: 'yy-mm-dd'
}).on("change", function () {
// 開始日が選択されたとき
// 開始日の選択可能最大日を設定
start.datepicker("option", "maxDate", getDate(this));
});
/**
* 選択された日付をminDate,maxDate用に変換
*/
function getDate(element) {
var date;
try {
date = $.datepicker.parseDate(format, element.value);
} catch (error) {
date = null;
}
return date;
}
[btn class=”rich_pink”]デモ確認[/btn]

コメント