カレンダー生成モジュールであるDatepickerで取得した年月日をリンクのパラメータとして使用する方法をメモします。
前回「Datepickerを日本語で利用する」で基本的な設定方法は説明しているので割愛します。
要件
Datepickerで取得した年月日を年月と日に分割して、以下のリンクを生成します。
分割した年月を「Ymdata」に、日を「Daydata」に代入します。また、当日は選択できない事と選択できる年月日は2022年3月31日までとします。
例)Datepickerで取得した年月日=2021年11月10日
リンク
https://www.sample.com/datepicker.php?Ymdata=202111&Daydata=10
基本的な設定
まず、DatePickerに必要なライブラリjQueryとjQuery UIのJSを読み込みます。
ライブラリ
<script src="jquery-3.4.1.min.js"></script> <script src="jquery-ui.min.js"></script> <script src="datepicker-ja.js"></script>
CSS(headに記述)
<link rel="stylesheet" href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
HTMLを記述する
ソースを記述します。
<body> <input type="text" id="datepicker" placeholder="年月日を選択してください" readonly> <input type="submit" id="datesubmit" name="ymd" value="検索する" onClick="calsearch();"> <script src="jquery-3.4.1.min.js"></script> <script src="jquery-ui.min.js"></script> <script src="datepicker-ja.js"></script> <script> //カレンダー制御 $( '#datepicker' ) . datepicker( { dateFormat: 'yy年mm月dd日',//データフォーマット minDate: '+1d',//1日先から選択 maxDate: new Date(2022, 03 - 1, 31)//2022年3月31日まで選択 }); function calsearch(){ var url = "https://www.sample.com/"; var ym = document.getElementById("datepicker"); //不要文字列を削除 ym.value = ym.value.replace("年", ""); ym.value = ym.value.replace("月", ""); ym.value = ym.value.replace("日", ""); //下2桁を削除(年月を取得) ymSlice = ym.value.slice( 0, -2 ); //上6桁を削除(日を取得) daySlice = ym.value.slice( 6 ); if( document.getElementById('datepicker').value ){ url += "?Ymdata="+ymSlice+"&Daydata="+daySlice; } location.href = url; } </script> </body>
カレンダーを制御する
当日は選択できない事と選択できる年月日は2022年3月31日までにしたいので、DatePickerのオプションを以下のように設定します。
dateFormat: 'yy年mm月dd日',//データフォーマット minDate: '+1d',//1日先から選択 maxDate: new Date(2022, 03 - 1, 31)//2022年3月31日まで選択
情報を取得する
選択されたカレンダー年月日情報を取得します。
submitにonClick="calsearch();を記述します。検索ボタンをクリックしたと同時にfunction calsearch()に情報を渡します。 <input type="submit" id="datesubmit" name="ymd" value="検索する" onClick="calsearch();"> function calsearch(){ var ym = document.getElementById("datepicker"); }
不要な文字列を削除し分割する
パラメータに代入する際、年月日は不要なので削除します。また年月と日に分割します。
不要な文字列の削除はreplace関数を使用します。
ym.value = ym.value.replace("年", ""); ym.value = ym.value.replace("月", ""); ym.value = ym.value.replace("日", "");
続いてslice関数を使用して分割します。
//下2桁を削除(年月を取得) ymSlice = ym.value.slice( 0, -2 ); //上6桁を削除(日を取得) daySlice = ym.value.slice( 6 );
リンクのパラメータを生成する
年月が代入されたymSliceと日が代入されたdaySliceをパラメータとして設定します。
url += "?Ymdata="+ymSlice+"&Daydata="+daySlice;
最後にリンク先へ遷移します。
location.href = url;
Datepickerのオプション次第で文字列を削除は不要
今回はDatepickerのフォーマットを年月日にしています。
dateFormat: 'yy年mm月dd日',//データフォーマット
そのため、replace関数で年月日を削除していますが、そもそもdateFormat自体に余計な情報がなければreplaceする必要はありません。
dateFormat: 'yymmdd',//データフォーマット
以上です。
予約なんかで使えそうですね。
デモ用意しました。