쇼핑 주소를 선택할 때와 마찬가지로 선택한 도를 통해 도시 목록이 동적으로 로딩되고, 선택한 도시를 통해 카운티 목록이 동적으로 로딩되므로 도, 시, 군의 3단계 연계가 가능합니다. 다음은 이 기능을 구현하기 위해 기본 JavaScript를 사용합니다.
먼저 테스트 결과를 보여드리겠습니다.
선택하지 않은 경우:
선택 시:
코드는 다음과 같습니다.
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>三级联动测试</title> <script src="jquery-2.1.4.min.js"></script> <script type="text/javascript"> //用来获得option元素中selected属性为true的元素的id function Get_Selected_Id(place){ var pro = document.getElementById(place); var Selected_Id = pro.options[pro.selectedIndex].id; return Selected_Id; //返回selected属性为true的元素的id } //改变下一个级联的option元素的内容,即加载市或县 function Get_Next_Place(This_Place_ID,Action){ var Selected_Id = Get_Selected_Id(This_Place_ID); //Selected_Id用来记录当前被选中的省或市的ID if(Action=='Get_city') //从而可以在下一个级联中加载相应的市或县 Add_city(Selected_Id); else if(Action=='Get_country') Add_country(Selected_Id); } //用来存储省市区的数据结构 var Place_dict = { "GuangDong":{ "GuangZhou":["PanYu","HuangPu","TianHe"], "QingYuan":["QingCheng","YingDe","LianShan"], "FoShan":["NanHai","ShunDe","SanShui"] }, "ShanDong":{ "JiNan":["LiXia","ShiZhong","TianQiao"], "QingDao":["ShiNan","HuangDao","JiaoZhou"] }, "HuNan":{ "ChangSha":["KaiFu","YuHua","WangCheng"], "ChenZhou":["BeiHu","SuXian","YongXian"] } }; //加载城市选项 function Add_city(Province_Selected_Id){ $("#city").empty(); $("#city").append("<option>City</option>"); $("#country").empty(); $("#country").append("<option>Country</option>"); //上面的两次清空与两次添加是为了保持级联的一致性 var province_dict = Place_dict[Province_Selected_Id]; //获得一个省的字典 for(city in province_dict){ //取得省的字典中的城市 //添加内容的同时在option标签中添加对应的城市ID var text = "<option"+" id='"+city+"'>"+city+"</option>"; $("#city").append(text); console.log(text); //用来观察生成的text数据 } } //加载县区选项 function Add_country(City_Selected_Id){ $("#country").empty(); $("#country").append("<option>Country</option>"); //上面的清空与添加是为了保持级联的一致性 var Province_Selected_ID = Get_Selected_Id("province"); //获得被选中省的ID,从而方便在字典中加载数据 var country_list = Place_dict[Province_Selected_ID][City_Selected_Id]; //获得城市列表 for(index in country_list){ ////添加内容的同时在option标签中添加对应的县区ID var text = "<option"+" id=\'"+country_list[index]+"\'>"+country_list[index]+"</option>"; $("#country").append(text); console.log(text); //用来观察生成的text数据 } } </script> </head> <body> <p>您的收货地址:</p> <select id="province" onchange="Get_Next_Place('province','Get_city')"> <option id="Not_data1">Province</option> <option id="GuangDong" value="GuangDong">GuangDong</option> <option id="ShanDong" value="ShanDong">ShanDong</option> <option id="HuNan" value="HuNan">HuNan</option> </select> <select id="city" onchange="Get_Next_Place('city','Get_country')"> <option id="Not_data2">City</option> </select> <select id="country"> <option id="Not_data3">Country</option> </select> <br/> </body> </html>
물론, 도, 시, 군은 모두 동적으로 연결되어 있으며, 최상위 콘텐츠가 변경되는 한 모든 하위 콘텐츠도 시 또는 국가로 변경되거나 재설정됩니다.
위 내용은 동적인 도, 시, 군 3단계 연계 드롭다운 박스 메뉴 예제 코드를 구현하기 위해 편집자가 공유한 네이티브 JavaScript 코드입니다.