4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

datepickerについてまとめる ~楽にカレンダーコントロールを実装~

Posted at

はじめに

カレンダーコントロールについて色々調べた結果、datepickerに行き着いたので記事にしようと思いました。
FullCalendar.jsも無料版で色々やれそうで面白かったので、また別の記事でまとめていこうと思います。

datepickerって何?

jquery UIのライブラリに含まれるカレンダー表示機能。

qiita0807.png

こんな感じのカレンダーを低いコストで実装できる。

datepickerの実装方法

jquery UIはCDNで実装できる。

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/themes/base/jquery-ui.min.css"> 
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1/i18n/jquery.ui.datepicker-ja.min.js"></script>

この2行をソースコードに追加するだけでdatepickerを実装できる。
後はdatepickerメソッドを呼び出すだけ。


<h3>date pickerを試す</h3>
<input type="text" id="currender_1">

<script>
$('#currender_1').datepicker();
</script>

この状態だと、datepickerには初期値が設定されていない。
datepickerには色々なメソッドが用意されており、初期値の設定にはsetDateを使う。

<script>
  const datetime = new Date();
  const datetime_today = datetime.getFullYear() + "-" +
                        (datetime.getMonth() + 1)  + "-" + 
                         datetime.getDate(); 
  $('#currender_1').datepicker({dateFormat: 'yy-mm-dd'});
  $("#currender_1").datepicker("setDate", datetime_today);
</script>

これで最初から値を入れることができる。

一応、コードの意図を説明すると
new Date()でJavascriptのDateオブジェクトを生成している。
datetime.getMonth() + 1 の意図は値の開始地点が0~なので、1を足して実際の月と合わせている。

datepickerの日本語化

日本語化もCDNで対応できる(便利)。

<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1/i18n/jquery.ui.datepicker-ja.min.js"></script>

先程、記述したCDN読み込み時のソースコードに上記を付け足すだけで日本語化できる。

datepickerのデザイン変更

datepickerには様々なデザインが用意されており、デザインを変更するにはCDN読み込み時のコードを変えるだけ。
その一例を示すと、

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/themes/base/jquery-ui.min.css"> 

上記のコードのbaseの部分をstartに変更するだけ。

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/themes/start/jquery-ui.min.css"> 

qiita0807-2.png

これだけで表示されるカレンダーのデザインが変わる。

最後に

実装のハードルの低さを鑑みると、簡易的なカレンダーコントロールの実装にはdatepickerがお勧めなのかなと感じました。
オプションも豊富で選択できる期間の制限もかけることが出来たりします。

ただ、カレンダーにスケジュールなどのイベントを追加するってなると、FullCalendar.jsや自作で作った方がいいのではと感じました。

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?