pagetop

BLOG

Datepickerを使ってリンクを生成する

  • HOME

  • BLOG

  • Datepickerを使ってリンクを生成する

Article

Datepickerを使ってリンクを生成する

javascript

カレンダー生成モジュールである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',//データフォーマット

 

以上です。

予約なんかで使えそうですね。

デモ用意しました。

デモ

Spread the love