ざっくり言って、↑ こんな感じのものです。
地域エリアフィールドで北海道東北を選ぶと、都道府県フィールドのリストが北海道東北の都道府県になり、関東を選ぶと関東の都道府県になり… ってものです。
仕組みとしては、もともと北海道東北以外の都道府県フィールドは、display:none で非表示にしてあり、地域エリアフィールドの値が変更されると、該当する都道府県フィールドを display:block にするというスクリプトを呼び出しています。
スクリプトは、こんな感じ。これを<head>内に埋め込みます。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <script type="text/javascript"> $(function(){ $('#sform select[name="area"]').change(function() { if ($('select[name="area"] option:selected').val() == '0') $('#prefectures0Box').css('display','block'); else $('#prefectures0Box').css('display','none'); if ($('select[name="area"] option:selected').val() == '1') $('#prefectures1Box').css('display','block'); else $('#prefectures1Box').css('display','none'); if ($('select[name="area"] option:selected').val() == '2') $('#prefectures2Box').css('display','block'); else $('#prefectures2Box').css('display','none'); if ($('select[name="area"] option:selected').val() == '3') $('#prefectures3Box').css('display','block'); else $('#prefectures3Box').css('display','none'); if ($('select[name="area"] option:selected').val() == '4') $('#prefectures4Box').css('display','block'); else $('#prefectures4Box').css('display','none'); if ($('select[name="area"] option:selected').val() == '5') $('#prefectures5Box').css('display','block'); else $('#prefectures5Box').css('display','none'); if ($('select[name="area"] option:selected').val() == '6') $('#prefectures6Box').css('display','block'); else $('#prefectures6Box').css('display','none'); }); }); </script>
HTMLはこんな感じ
<div id="sform" class="row"> <div class="col-sm-6"> <label for="area">地域エリア</label> <select id="area" class="" name="area"> <option value="0" selected>選択する</option> <option value="1">北海道・東北</option> <option value="2">関東</option> <option value="3">中部</option> <option value="4">近畿</option> <option value="5">中国・四国</option> <option value="6">九州・沖縄</option> </select> </div> <div class="col-sm-6"> <div id="prefectures0Box"> <label for="prefectures0">都道府県</label> <select id="prefectures0" class="" name="prefectures0"> <option value="0">選択する</option> <option value="11">北海道</option> <option value="12">青森県</option> <option value="13">岩手県</option> <option value="14">宮城県</option> <option value="15">秋田県</option> <option value="16">山形県</option> <option value="17">福島県</option> <option value="21">茨城県</option> <option value="22">栃木県</option> <option value="23">群馬県</option> <option value="24">埼玉県</option> <option value="25">千葉県</option> <option value="26">東京都</option> <option value="27">神奈川県</option> <option value="31">新潟県</option> <option value="32">富山県</option> <option value="33">石川県</option> <option value="34">福井県</option> <option value="35">山梨県</option> <option value="36">長野県</option> <option value="37">岐阜県</option> <option value="38">静岡県</option> <option value="39">愛知県</option> <option value="41">大阪府</option> <option value="42">京都府</option> <option value="43">兵庫県</option> <option value="44">奈良県</option> <option value="45">三重県</option> <option value="46">滋賀県</option> <option value="47">和歌山県</option> <option value="51">鳥取</option> <option value="52">島根</option> <option value="53">岡山</option> <option value="54">広島</option> <option value="55">山口</option> <option value="56">香川</option> <option value="57">愛媛</option> <option value="58">徳島</option> <option value="59">高知</option> <option value="61">福岡</option> <option value="62">佐賀</option> <option value="63">長崎</option> <option value="64">熊本</option> <option value="65">大分</option> <option value="66">宮崎</option> <option value="67">鹿児島</option> <option value="68">沖縄</option> </select> </div> <div id="prefectures1Box" style="display:none"> <label for="prefectures1">都道府県</label> <select id="prefectures1" class="" name="prefectures1"> <option value="0">選択する</option> <option value="11">北海道</option> <option value="12">青森県</option> <option value="13">岩手県</option> <option value="14">宮城県</option> <option value="15">秋田県</option> <option value="16">山形県</option> <option value="17">福島県</option> </select> </div> <div id="prefectures2Box" style="display:none"> <label for="prefectures2">都道府県</label> <select id="prefectures2" class="" name="prefectures2"> <option value="0">以下から選択</option> <option value="21">茨城県</option> <option value="22">栃木県</option> <option value="23">群馬県</option> <option value="24">埼玉県</option> <option value="25">千葉県</option> <option value="26">東京都</option> <option value="27">神奈川県</option> </select> </div> <div id="prefectures3Box" style="display:none"> <label for="prefectures3">都道府県</label> <select id="prefectures3" class="" name="prefectures3"> <option value="0">選択する</option> <option value="31">新潟県</option> <option value="32">富山県</option> <option value="33">石川県</option> <option value="34">福井県</option> <option value="35">山梨県</option> <option value="36">長野県</option> <option value="37">岐阜県</option> <option value="38">静岡県</option> <option value="39">愛知県</option> </select> </div> <div id="prefectures4Box" style="display:none"> <label for="prefectures4">都道府県</label> <select id="prefectures4" class="" name="prefectures4"> <option value="0">選択する</option> <option value="41">大阪府</option> <option value="42">京都府</option> <option value="43">兵庫県</option> <option value="44">奈良県</option> <option value="45">三重県</option> <option value="46">滋賀県</option> <option value="47">和歌山県</option> </select> </div> <div id="prefectures5Box" style="display:none"> <label for="prefectures5">都道府県</label> <select id="prefectures5" class="" name="prefectures5"> <option value="0">選択する</option> <option value="51">鳥取</option> <option value="52">島根</option> <option value="53">岡山</option> <option value="54">広島</option> <option value="55">山口</option> <option value="56">香川</option> <option value="57">愛媛</option> <option value="58">徳島</option> <option value="59">高知</option> </select> </div> <div id="prefectures6Box" style="display:none"> <label for="prefectures6">都道府県</label> <select id="prefectures6" class="" name="prefectures6"> <option value="0">選択する</option> <option value="61">福岡</option> <option value="62">佐賀</option> <option value="63">長崎</option> <option value="64">熊本</option> <option value="65">大分</option> <option value="66">宮崎</option> <option value="67">鹿児島</option> <option value="68">沖縄</option> </select> </div> </div> </div>
私は、高速化が期待できるのと、楽チンだからという理由で、jquery を読み込むには、Google から提供されているライブラリを、CDN(Content Delivery Network)を利用して読み込んでいます。
Googleから提供されているCDNライブラリの最新バージョンや読み込み方の確認は ↓ コチラ