日付の範囲指定用プラグイン「DateRangePicker」の利用方法
日付型のデータを検索する際に開始・終了日のテキストボックスを用意し、それぞれにタイムピッカー系プラグインを効かせることが多い。これを1つのテキストボックスでまとめて指定させたい。また「過去7日間」「今月」「先月」等を簡単に選択させたい。「DateRangePicker」プラグインで実装できる模様。以下に実装方法をメモ。
DateRangePicker
公式サイト
https://www.daterangepicker.com/
GitHub
https://github.com/dangrossman/daterangepicker
CDN
CDNで使う場合は以下を記述する。
<!-- jquery --> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script> <!-- moment --> <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.30.1/moment.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.30.1/locale/ja.min.js"></script> <!-- daterangepicker --> <script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-daterangepicker/3.0.5/daterangepicker.min.js"></script> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-daterangepicker/3.0.5/daterangepicker.min.css">
サンプル
https://taitan916.info/sample/DateRangePicker/
テキストボックス部分をクリックするとピッカーが表示され、「過去7日間」「今月」「先月」等を選択すると指定した期間が入力される筈。また「範囲を指定」を選択すると自由に範囲が指定できる。
実装方法
ソースコード
<input type="text" id="date" readonly> <input type="hidden" name="start" id="start"> <input type="hidden" name="end" id="end"> <!-- jquery --> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script> <!-- moment --> <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.30.1/moment.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.30.1/locale/ja.min.js"></script> <!-- daterangepicker --> <script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-daterangepicker/3.0.5/daterangepicker.min.js"></script> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-daterangepicker/3.0.5/daterangepicker.min.css"> <script> $(function(){ moment.locale("ja"); $('#date').daterangepicker( { ranges: { '今日': [moment(), moment()], '昨日': [moment().subtract(1, 'days'), moment().subtract(1, 'days')], '過去7日間': [moment().subtract(6, 'days'), moment()], '過去30日間': [moment().subtract(29, 'days'), moment()], '今月': [moment().startOf('month'), moment().endOf('month')], '先月': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')] }, startDate: moment(), endDate: moment(), format: "YYYY-MM-DD", locale: { applyLabel: "OK", customRangeLabel: "範囲を指定"} }, function( start, end ){ $('#start').val(start.format('YYYY-MM-DD')); $('#end').val(end.format('YYYY-MM-DD')); } ); }); </script>
解説等
上記ソースコードの場合、日付を選択するとhidden属性の#start / #endにそれぞれ指定した開始・終了日が入る。
もちろんhidden属性を利用せず、フォームの送信後にPHP等で整形処理しても良い。
尚、readonly属性を付与しておかないとキーボード入力が有効になるので注意すること。
参考サイト
関連記事
-
formでファイルを選択した際にファイル名やサイズ、形式を調べる方法
フォームで画像などをアップロードする際に「ファイルサイズが大きすぎないか?」「拡 ...
-
jQueryで配列の値を検索
やりたかった事は、配列の中に特定の値があるか どうか検索し、その後の分岐を行いた ...
-
jQuery UIを使って簡単にダイアログを表示させる方法
ブラウザ上でユーザーに対してちょっとした確認を行いたい場合はJavaScript ...
-
セレクトメニューにサジェスト機能をつける方法(select2)
formのselectメニューで何文字が入力すると候補を絞って表示させるサジェス ...
-
ajaxのエラー詳細を取得する
success or errorで分岐処理はできるけど、 エラー詳細取れないの? ...