所谓级联效果,即页面上存在具有包含关系的多组下拉框。当逻辑上的父级下拉框某个选项被选中(即selected),其包含的列表内容作为子级下拉框中的选项(option)供用户选择。例如:当用户选择所在区域时,城市下拉框选择“北京”,对应的区县下拉框中内容动态生成为为“海淀,朝阳,西城......”。一旦城市固定,用户仅能选择该城市下的对应区县。现将jquery下的实现进行分享。
- 首先是页面中两个select标签html代码,本例中使用的框架为freemaker框架,其中科室属于医院(病人属于科室):
<div class="row cl"> <label class="form-label col-3">医院:</label> <div class="formControls col-5"> <span class="select-box"> <select class="select" id="selecthos" name="department.hosID" onchange="hosChange()"> <#if department??> <#list hospitals as item> <#if department.hosID==item.hosID> <option value="${item.hosID}" selected>${item.hosName!}</option> <#else> <option value="${item.hosID}">${item.hosName!}</option> </#if> </#list> <#else> <#list hospitals as item> <option value="${item.hosID}">${item.hosName!}</option> </#list> </#if> </select> </span> </div> <div class="col-4"></div> </div> <div class="row cl"> <label class="form-label col-3">科室:</label> <div class="formControls col-5"> <span class="select-box"> <select class="select" id="selectdepart" name="patient.departID"> </select> </span> </div> <div class="col-4"></div> </div>
2.js中hosChange函数实现:
function hosChange(){ var hosID=$("#selecthos").val(); Common.AjaxPost('${base}/test/patient/getDeparts?resultType=json', {"hosID":hosID}, undefined,function(data){ $("#selectdepart").empty(); for(var depart in data){ $("#selectdepart").append("<option value='"+data[depart].departID+"'>"+data[depart].departName+"</option>"); } },function(errMsg,errCode){ Common.Alert(errMsg); }); }
主要思想是通过ajax获得指定医院ID下的所有科室,前端循环append到select标签下。