Js异步级联选择框实践方法
HTML:
<li> <span>所在地区:</span> <select name="prov" id="ddl_prov" onchange="event_change_prov(this);" class="required" missingmsg="请选择省"> <option value="">请选择省</option> </select> </li> <li> <span></span> <select name="city" id="ddl_city" onchange="event_change_city(this);" class="required" missingmsg="请选择市"> <option value="">请选择市</option> </select> </li> <li> <span></span> <select name="area" id="ddl_area" class="required" missingmsg="请选择区"> <option value="">请选择区</option> </select> </li>
Javascript:
//省值改变 function event_change_prov(self) { var value = $(self).val(); if (isEmpty(value)) { bindDropdownList("ddl_city", []) } else { bindArea("ddl_city", value); } } //市值改变 function event_change_city(self) { var value = $(self).val(); if (isEmpty(value)) { bindDropdownList("ddl_area", []) } else { bindArea("ddl_area", value); } } //绑定下拉框 function bindDropdownList(targetId, data) { $("#" + targetId).html(""); var html = ""; if (targetId == "ddl_prov") { html="<option value=''>请选择省</option>"; } else if (targetId == "ddl_city") { html = "<option value=''>请选择市</option>"; } else if (targetId == "ddl_area") { html = "<option value=''>请选择区</option>"; } else { html = "<option value=''>请选择</option>"; } for (var i = 0; i < data.length; i++) { html = html + "<option value='" + data[i].Value + "'>" + data[i].Text + "</option>"; } $("#" + targetId).html(html); } //级联下拉框列表 var ddls = ["ddl_prov", "ddl_city", "ddl_area"]; //绑定地区 function bindArea(id, code) { if (isEmpty(id) || $("#" + id).length == 0) {return; } if (id == "ddl_prov" && isEmpty(code)) { code = ""; } Request.get('/XXX/XXX?code=' + code, function (result) { bindDropdownList(id, result); var name = $("#" + id).attr("name"); var or = $("#hid_" + name).val(); if (isEmpty(or)) {return; } $("#" + id).val(or); var ncode = $("#" + id).val(); var index = ddls.indexOf(id); if (index >= 0 && index < ddls.length - 1) { var nid = ddls[index + 1]; bindArea(nid, ncode); } }); }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构