よくフォームなどで年月日のプルダウンを作成するときが多いのでちょっと簡単にプルダンを作成する方法ご紹介します。
1950年から2016年までのプルダウンを書くのはとても大変なのでプログラムを書いて自動化してしまいましょう。
一度書いてしまえばあとは使いまわしていけるのでとても楽です。1〜12月と1〜31日も合わせて作っていきます。ついでに都道府県のプルダウンも作ってみましょう。
JSでのサンプル
まずは年月日のプルダウンプログラム
date.js
このプログラムは即時関数の中に入れていきます。
(function() {
'use strict';
// プログラムを書きます
})();
上記の即時関数の中に書いて行きます。
var optionLoop, this_day, this_month, this_year, today;
today = new Date();
this_year = today.getFullYear();
this_month = today.getMonth() + 1;
this_day = today.getDate();
この上の文は変数を初期化してからtoday変数に今日の日付を入れます。
今回はデフォルト値が本日の日なのでこれは必ずしも必須ではないです。
optionLoop = function(start, end, id, this_day) {
var i, opt;
opt = null;
for (i = start; i <= end ; i++) {
if (i === this_day) {
opt += "<option value='" + i + "' selected>" + i + "</option>";
} else {
opt += "<option value='" + i + "'>" + i + "</option>";
}
}
return document.getElementById(id).innerHTML = opt;
};
上記が関数です。基本的には数字を入れて回すというものです。
function(start, end, id, this_day)
startがスタートの数字、endが最後の数字、idはhtml側で出力する際に必要なid名、this_dayがデフォルト値です、今回は本日の日付にしてあります。
optionLoop(1950, this_year, 'id_year', this_year);
この関数を使って出力します。1950年から今年までをid_yearというid名に出力しています。
optionLoop(2000, 2015, 'id_year', 2005);
上記のように書けば2000から2015年までをid_yearに出力する、デフォルト値は2005年ということになります。簡単ですね。あとはhtml側でselect要素にid名をつけておいておけばjavascriptが処理をしてくれます。
index.html
下記は全文です、コピペで確認できます。
⇒デモを見てみる
次は都道府県のプルダウンプログラム
都道府県の場合は配列を作って回していけば出来ますね。一応わかりやすいようにオブジェクトにしてキーを入れて回します。
pref.js
年月日と違うところはあらかじめ配列を作って回すところですね。
pref変数の中に都道府県をいれてfor..in..で回して表示させます。
下記は全文です。
⇒デモを見てみる
下記ダウンロードして確認も出来ます。
ダウンロード
追記
jQueryのプラグイン化しました、こっちの方が使いやすいです。
select文の中にdata属性で指定することでオプション代わりになります。
` data-choice=”year” // year, month, dayのいずれかを使用`
例としてyearにします。html側としては下記のようにします。
</body>
の上に下記のようにスクリプトを読み込ませます。
このオプションはdata-startyear=”2000”のようにhtml側に記述しても同じ事になります。これで2000〜2016までのオプション要素が指定IDに表示されます。
data-choiceがmonthやdayの場合はオプションを書かなくても表示されます。
さらに年月日以外でも使えるようにしてあります。
オプションでstart:’100’,end:’200’,select:’150’の用にするかdata属性でdata-start=”100” data-end=”200” data-select=”150”のように指定するとその値が表示されます。
startは最初の数字、endは最後の数字、selectはデフォルトで表示している数字になります。
上記のように指定すれば100〜200までが表示され150が選択されている状態になります。スクリプト側にも指定できます。
下記からダウンロードしてお使いください。
jquery.ymdpulldown.jsのダウンロード
参考になれば幸いです
矢次 悟郎 SBクリエイティブ 2016-02-10
∞Tadashi Suyama∞