勉強したことのメモ

webプログラマが勉強したことのメモ。

jQuery UIでカレンダーピッカー(Datepicker)の利用方法

   

フォーム等で日付を入力する際にカレンダーピッカー機能を実装することがある。その際は大体jQueryプラグインのDateTimePickerというものを利用していた。ただ、今回は機能的な問題でjQuery UIのDatepickerを利用することになったので使い方をメモ。

 

リファレンス

https://js.studio-kingdom.com/jqueryui/widgets/datepicker

 

CDN呼び出し

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js"></script>
<script src="https://rawgit.com/jquery/jquery-ui/master/ui/i18n/datepicker-ja.js"></script>
<link rel="stylesheet" href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">

 

各種ソース&サンプル

オプション無しの基本的な呼び出し方

$("#date").datepicker({});

https://taitan916.info/sample/jquery-ui-datepicker/

 

年月日のフォーマットを指定の上で、本日~30日後まで選択可能

$("#date").datepicker({
	minDate: 0, //最小は本日まで
	maxDate: 30, //最大は30日後まで
	dateFormat: 'yy/mm/dd', //年月日のフォーマット
});

minDateやmaxDateは日付指定も可能。

https://taitan916.info/sample/jquery-ui-datepicker/index2.php

 

特定の日にClass付与&選択不可

//特定の日指定
var sample_holiday = ['2021-06-23', '2021-07-01']

$("#date").datepicker({
	minDate: 0, //最小は本日まで
	maxDate: 30, //最大は30日後まで
	dateFormat: 'yy-mm-dd', //年月日のフォーマット
	beforeShowDay: function(date) {

		//特定の日にClass付与&選択不可
		for (var i = 0; i < sample_holiday.length; i++) {
			var holiday = new Date(Date.parse(sample_holiday[i]));
			if (holiday.getYear() == date.getYear() &&
				holiday.getMonth() == date.getMonth() &&
				holiday.getDate() == date.getDate()) {
				return [false, 'sample_holiday', null];
			}
		}

		return [true, 'day-weekday', null];
	},
});

特定の日付にClassを付与するオプションというのがjQueryプラグインのDateTimePickerには無かった為、今回jQuery UIを利用している。
[false, 'sample_holiday', null]

上記の第1引数部分でカレンダーの選択可否を設定、第2引数でClass名を指定できる。

https://taitan916.info/sample/jquery-ui-datepicker/index3.php

 

所感

jQueryプラグインのDateTimePickerで困った時にGoogle検索するとjQuery UI版の情報がヒットすることが多い。これを機にjQuery UI版にのりかえるのもありかと思った。

 - jQuery, JavaScript

  関連記事

サイトにHTMLエディタ(WYSIWYG)を導入する方法

シンプルで導入が簡単、且つ日本語化されているウィジウィグを探しており、良さそうな ...

Ajaxで画像のアップロード(jquery.upload)

業務中に画像の選択後、アップロードボタンを押して画像のアップ、 その後フォームの ...

jQueryで後から追加された要素にイベントを設定

jQueryで.html()等を使って追加した要素に対してイベントを設定したかっ ...

無料でジオコーディング(住所→経度緯度)を行う

GoogleMapAPIでジオコーディングをするには、支払い情報を登録したアカウ ...

submit関連のjQuery

<?php //jQueryでのsubmit,エンターキーでのsubmit ...

javascriptのfor文で負荷軽減

javascriptで配列の数だけループをまわす際、 for (i=0; i&l ...

reCAPTCHA v2でAjaxは使わずにチェック状況を確認する方法

reCAPTCHA v2を実装する案件があり以前の記事を参考に組み込んでみたもの ...

Ajaxの負荷対策

Ajaxを使ってボタンを押した際に表示を切り替える処理。 都度Ajaxを使ってた ...

テキストエリアを自動でリサイズ

改行するだけで勝手にリサイズしてくれるので、 ユーザー用でも管理用でも使えそう。 ...

jQueryプラグインでクリップボードにコピーする方法(clipboard.js)

ページ上のボタンをクリックすることで特定の文章をクリップボードにコピーしたかった ...