A refreshing JavaScript Datepicker
- 軽量 (minified and gzipped 5kb less)
- 依存なし (but plays well with Moment.
- Modular CSS classes for easy styling
Try Pikaday Demo →
Production ready? バージョン1.0.0以降、ピカデーは安定しており、実運用で使用されています。 しかし、もしバグを見つけたり、機能の要望があれば、GitHubの課題追跡システム(issue tracker)に投稿してください。changelog
Installation
PikadayはNPMパッケージとしてインストールできます:
npm install pikaday
またはCDNに直接リンクします:
<script src="https://cdn.jsdelivr.net/npm/pikaday/pikaday.js"></script>
Styles
さらにPikaday CSSファイルを含めることが必要です。 このステップは、Pikadayがどのようにインストールされたかに依存します。 NPMからインポートする:
@import './node_modules/pikaday/css/pikaday.css';
またはCDNにリンクする:
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/pikaday/css/pikaday.css">
使用方法
Pikadayを入力フィールドにバインドすることができます。
<input type="text">
JavaScriptをドキュメントの最後に追加します:
<script src="pikaday.js"></script><script> var picker = new Pikaday({ field: document.getElementById('datepicker') });</script>
jQueryを使用している場合、最初の要素のみを渡すことを確認します。
var picker = new Pikaday({ field: $('#datepicker') });
Pikaday インスタンスがフィールドにバインドされていない場合、要素をどこにでも追加できます:
var field = document.getElementById('datepicker');var picker = new Pikaday({ onSelect: function(date) { field.value = picker.toString(); }});field.parentNode.insertBefore(picker.el, field.nextSibling);
Formatting
デフォルトでは、日付は標準 JavaScript Date オブジェクトを使ってフォーマットおよびパースされます。Moment.js がスコープ内で利用可能な場合、入力値のフォーマットと解析に使用されます。 設定に追加の format
オプションを渡すことができ、それは moment
コンストラクタに渡されます。完全なバージョンは moment.js のサンプルを参照してください。
<input type="text" value="9 Oct 2014"><script src="moment.js"></script><script src="pikaday.js"></script><script> var picker = new Pikaday({ field: document.getElementById('datepicker'), format: 'D MMM YYYY', onSelect: function() { console.log(this.getMoment().format('Do MMMM YYYY')); } });</script>
より高度で柔軟な書式設定を行うには、独自の toString
関数を設定に渡すと、日付オブジェクトをフォーマットするために使用されます。 もし、返すフォーマットされた文字列が Date.parse
メソッド (または利用可能であれば moment
) によって正しくパースできない場合、 config で独自の parse
関数を提供しなければなりません。 この関数はフォーマットされた文字列とformat:
parse(dateString, format = 'YYYY-MM-DD')
var picker = new Pikaday({ field: document.getElementById('datepicker'), format: 'D/M/YYYY', toString(date, format) { // you should do formatting based on the passed format, // but we will just return 'D/M/YYYY' for simplicity const day = date.getDate(); const month = date.getMonth() + 1; const year = date.getFullYear(); return `${day}/${month}/${year}`; }, parse(dateString, format) { // dateString is the result of `toString` method const parts = dateString.split('/'); const day = parseInt(parts, 10); const month = parseInt(parts, 10) - 1; const year = parseInt(parts, 10); return new Date(year, month, day); }});
Configuration
上の例で示したようにPikadayには多くの便利なオプションが用意されています。
-
field
datepicker をフォーム フィールドにバインドする -
trigger
datepicker を開くトリガーに別の要素を使用する。 トリガーの例を参照してください (デフォルトはfield
) -
bound
field
フォーカス時に日付ピッカーを自動的に表示/隠す (field
が設定されている場合はデフォルトtrue
) -
ariaLabel
data-attribute with an aria assistance text (bound
が設定されているときのみ適用) -
position
form field に対する日付ピッカー位置、例えば、…g.:top right
,bottom right
注意: 自動調整は、datepicker がビューポートの外に表示されるのを避けるために行われるかもしれません。 True) -
container
カレンダーをレンダリングする DOM ノード、コンテナの例を参照(デフォルト:未定義) -
format
.toString()
およびfield
値のデフォルト出力形式(要 Moment.NET) -
container
は、ビューポート内で日付ピッカーを再配置しないように設定できます。 -
formatStrict
moment の厳密な日付解析のデフォルトフラグ (カスタムフォーマットには Moment.js が必要) -
toString(date, format)
カスタムフォーマットのために使用される関数です。 この関数は、moment
. -
parse(dateString, format)
入力文字列をパースして日付オブジェクトを取得する関数より優先されます。 この関数はmoment
. -
defaultDate
最初に開いたときに表示する日付 -
setDefaultDate
論理値 (true/false).defaultDate
を初期選択値とする -
firstDay
曜日 (0: 日曜日、 1: 月曜日など) -
minDate
最小/最古日付(ネイティブ日付オブジェクト – e. coliが必要)を選択することができるようになる。 -
maxDate
選択できる最大/最小の日付 (これはネイティブの日付オブジェクトでなければなりません – 例:new Date()
またはmoment().toDate()
) -
disableWeekends
土日の選択を無効にする -
disableDayFn
コールバック関数に、ビュー内の各曜日の日付オブジェクトを渡します。 -
yearRange
両側の年数 (例:10
) または上限/下限の配列 (例: - ) を返さなければならない。
)
-
showWeekNumber
ISO 週番号を行の先頭に表示 (デフォルトfalse
) -
pickWholeWeek
日ではなく週全体を選択 (デフォルトfalse
) -
isRTL
右から左にカレンダーを反転させる。左言語 -
i18n
月名と曜日名の言語デフォルト (下記の国際化を参照) -
yearSuffix
タイトルで年に追加する追加テキスト -
showMonthAfterYear
タイトルで年の後に月を表示する (デフォルトfalse
) -
showDaysInNextAndPreviousMonths
次または前の月のカレンダーグリッドの日にちを表示する (デフォルト。) false) -
enableSelectionDaysInNextAndPreviousMonths
翌月または前月の日付を選択する (デフォルト: false) -
numberOfMonths
カレンダーの表示数 -
mainCalendar
numberOfMonths
が使われている場合、メインカレンダーがどこにあるかを選択できるようにします(デフォルトleft
、right
に設定することも可能)。 最初の表示、または選択した日付がまだ表示されていない場合のみ使用されます -
events
通常の日と区別したい日付の配列 (例.)
-
theme
異なるテーマのスタイリングのフックとして使用できる classname を定義します。 テーマの例を参照 (デフォルトnull
) -
blurFieldOnSelect
日付が選択されたときにフィールドをぼかすかどうかを定義 (デフォルトtrue
) -
onSelect
日付選択時のコールバック関数 -
onOpen
ピッカーが可視化する時のコールバック関数onClose
ピッカーが隠されたときのコールバック関数 -
onDraw
ピッカーが新しい月を描いたときのコールバック関数 -
keyboardInput
enable keyboard input support (defaulttrue
)
Styling
if reposition
configuration-… – –
– – –
top-aligned
left-aligned
right-aligned
bottom-aligned
DOM要素は通常2つのCSSクラス(例: CSS-ref.DM)を持っているので注意してください。
jQuery Plugin
Pikaday の通常版は jQuery を必要としませんが、お好みであれば jQuery プラグインがあります (リポジトリの plugins/pikaday.jquery.js
を参照してください)。 このバージョンは当然 jQuery を必要とし、他のプラグインと同様に使用できます。
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script><script src="pikaday.js"></script><script src="plugins/pikaday.jquery.js"></script><script>// activate datepickers for all elements with a class of `datepicker`$('.datepicker').pikaday({ firstDay: 1 });// chain a few methods for the first datepicker, jQuery style!$('.datepicker').eq(0).pikaday('show').pikaday('gotoYear', 2042);</script>
AMD サポート
モジュール式のスクリプトローダーを使っているなら、Pikaday はグローバルオブジェクトに縛られないので、構築プロセスにうまくフィットするでしょう。 他のモジュールと同様にPikadayをrequireすることができます。完全版はAMDの例を参照してください。
require(, function(Pikaday) { var picker = new Pikaday({ field: document.getElementById('datepicker') });});
同じことが、上記のjQueryプラグインにもあてはまります。完全版はjQuery AMDの例を参照してください。
require(, function($) { $('#datepicker').pikaday();});
CommonJS module support
CommonJS compatible environmentを使っていれば、pikadayを読み込むためにrequire functionを使用することができます。
var pikaday = require('pikaday');
必要なモジュールをすべてBrowserifyでバンドルし、Moment.jsを使用しない場合はignoreオプションを指定します。
browserify main.js -o bundle.js -i moment
Ruby on Rails
Railsを使っているならPikaday gemをチェックアウトするようにしてください。
Methods
作成後の日付ピッカーを制御できます:
var picker = new Pikaday({ field: document.getElementById('datepicker') });
Get and set date
picker.toString('YYYY-MM-DD')
選択した日付を文字列形式で取得します。 Moment.jsが存在する場合(推奨)、PikadayはMomentが理解できる任意のフォーマットを返すことができます。また、独自のtoString
関数を用意して、自分でフォーマットを行うことも可能です。
moment
オブジェクトもtoString
関数も提供されない場合、JavaScriptのデフォルトの.toDateString()
メソッドが使用されます。
picker.getDate()
選択した日の基本JavaScript Date
オブジェクト、または選択がない場合はnull
を返します。 これは、minDate
とmaxDate
のオプションが指定されていれば、その範囲内に制限されます。 オプションで、onSelect コールバックのトリガー (true) を防ぐために、2 番目のパラメーターとしてブール値を渡すことができ、日付を静かに設定できます。
picker.getMoment()
選択した日付の Moment.js オブジェクトを返します (Moment は Pikaday より前に読み込まれなければなりません)。
picker.setMoment(moment('14th February 2014', 'DDo MMMM YYYY'))
現在の選択項目をMoment.jsオブジェクトで設定します(詳細はsetDate
参照)。
Clear and reset date
picker.clear()
pickerが結合されている入力をクリア、リセットします。
Change current view
picker.gotoDate(new Date(2014, 1))
特定の日付を見るために現在のビューを変更します。 この例では、2014年2月にジャンプします(月はゼロベースのインデックスです)。
picker.gotoToday()
Shortcut for picker.gotoDate(new Date())
picker.gotoMonth(2)
月ごとに現在の表示を変更します(0:1月、1:2月など)。
picker.nextMonth()
picker.prevMonth()
次または前の月へ行きます(必要なら年を変更します)。
picker.gotoYear()
表示中の年を変更する。
picker.setMinDate()
選択できる最小/最古の日付を更新する。
picker.setMaxDate()
選択できる最大/最新の日付を更新する。
picker.setStartRange()
範囲の開始日を更新する。 2つのPikadayインスタンスを使用して日付範囲を選択する場合.
picker.setEndRange()
範囲終了日を更新する.
範囲終了日を更新する.
datepickerの表示と非表示
picker.isVisible()
true
またはfalse
を返します。
picker.show()
ピッカーを見えるようにする。
picker.adjustPosition()
ピッカーの位置を再計算して変更する。
picker.hide()
ピッカーが見えないようにする。
picker.destroy()
ピッカーを非表示にして、すべてのイベント リスナーを削除します – 後戻りできません!
国際化
デフォルトの i18n
設定フォーマットは次のようになります。
i18n: { previousMonth : 'Previous Month', nextMonth : 'Next Month', months : , weekdays : , weekdaysShort : }
あなたは 12 ヶ月および 7 週間を指定しなければなりません (省略形も使用できます)。 曜日は必ず日曜日を先頭にこの順序で指定してください。 必要に応じてfirstDay
オプションで並び替えができます(0:日曜日、1:月曜日、など)。 また、右から左に読む言語のために、isRTL
を true
に設定することもできます。
Extensions
Timepicker
Pikaday は純粋な日付ピッカーです。 それは、時間帯を選ぶことをサポートしません。 しかし、Pikaday に時間のサポートを追加する努力がなされています。
You can use the work @owenmead did most recently at owenmead/PikadayA more simple time selection approach done by @xeeali at xeeali/Pikaday is based on version 1.0.2.0.Also @stas has a fork stas/Pikaday, but now quite old
Browser Compatibility
- IE 7+
- Chrome 8+
- Firefox 3.5+
- Safari 3+
- Opera 10.6+
Authors
- David Bushell https://dbushell.com @dbushell
- Ramiro Rikkert GitHub @RamRik
Thanks for the name.
@shoogledesigns に感謝します。