HTML嵌套选择选项

时间:2015-09-24 01:05:31

标签: html list html-select optgroup

我不确定Select标签是否是最好的方法,但这就是我所拥有的:

<select size="20" style="width:25%;">
<option>State 01</option>
    <option>City 01</option>
    <option>City 02</option>
    <option>City 03</option>
<option>State 02</option>
    <option>City 01</option>
<option>State 03</option>
    <option>City 01</option>
    <option>City 02</option>
</select>

目前我正在寻求建议和意见。简而言之,此框将放置在地图旁边,当选择特定状态时,它将显示在地图上,我希望显示该状态的城市列表(仅在选择状态时,而不是之前)。然后,用户可以从选项中选择一个城市以在地图上查看。如果选择了另一个州,将为新选择的州显示新的城市“下拉列表”,之前选择的州的城市将再次隐藏。

我看过使用select optgroup标记(https://stackoverflow.com/a/9892421/5003918)的代码,但我也想要隐藏显示功能。

我应该只有两个单独的选择框吗?一个州填写,另一个(最初为空)将在选择州时填写城市?或者也许是无序列表?在任何给定时间都将选择零或一个州。

1 个答案:

答案 0 :(得分:0)

有几种方法可以实现您的目标。一种方法是拥有两个单独的下拉菜单,一个用于状态,另一个用于根据所选状态自动填充的城市。 接下来的事情是,数据源,您将在哪里获得具有关联的州/城市列表(哪些城市属于哪个州)。这里有很多选项,在我分享的例子中,我选择了JSON的结构,但你可以选择其他任何东西。 我使用纯JS代码,但你可以轻松地使用另一个库作为JQuery,它将缩短代码行。 JS代码 var States = [{   关键:13,   名称:“State1”,   城市:[“City1”,“City2”,“Silver Spring”] },{   关键:2,   名称:“State2”,   城市:[“City5”,“City9”,“City8”,“San Diego”] }]; //填充州 for(var i = 0; i&lt; States.length; i ++){   var opt = States [i];   var el = document.createElement(“option”);   el.textContent = opt.name;   el.value = opt.key;   StatesList.appendChild(EL); } //填充初始城市 populateCities(); //填充城市 function populateCities(){   //清除城市列表   document.getElementById('CitiesList')。options.length = 0;   var e = document.getElementById(“StatesList”);   var selectedState = e.options [e.selectedIndex] .value;   var listOfCities;   for(var i = 0; i&lt; States.length; i ++){     if(States [i] .key == selectedState){       listOfCities = States [i] .cities;       打破;     }   }   //填充Cities DropDown菜单   for(var i = 0; i&lt; listOfCities.length; i ++){     var opt = listOfCities [i];     var el = document.createElement(“option”);     el.textContent = opt;     el.value = opt;     CitiesList.appendChild(EL);   } } HTML &lt; div class =“DDStyle”id =“states”onChange =“populateCities()”&gt;   状态 :   &lt; select id =“StatesList”class =“DDStyle”&gt;   &LT; /选择&GT; &LT; / DIV&GT; &lt; div id =“Cities”class =“DDStyle”&gt;   城市:   &lt; select id =“CitiesList”class =“DDStyle”&gt;   &LT; /选择&GT; &LT; / DIV&GT; http://codepen.io/anon/pen/wKzqYG