下拉框的二級聯動


需求描述:點擊服務類型下拉框,選擇后,后邊的服務類別會自動的匹配到與服務類型相對應的,卧槽,繞來繞去的,說不明白啦。舉個例子:服務類型A,B,C三個可選,當選擇A的時候,服務類別會自動填充上A01,A02,A03,當選擇B的時候,服務類別會自動填充上Bf,Bg,Bh,當選擇C的時候,服務類別會自動填充上C1,C2,C3,就是和地區三級聯動差不多的那種,我靠,最后一句就說明白了,暈死_(¦3」∠)_

思路分析:后台查服務類型的Aname和Acode,並且放到一個list中。把這個list傳遞到前台去遍歷取值。對這個select加一個監聽,如果選擇了,就獲取到選擇內容,並且可以得到該服務類型的Aname和Acode,把Aname和Acode通過ajax傳遞到后台,后台接收(查數據庫的條件,用哪個,傳遞那個),查數據庫,查詢條件是Aname 或者 Acode,得到服務類別的list,同樣的把該list傳遞到前台,前台拼接      廢話就這么多了,上代碼:

代碼:

//后台java代碼 去新增頁面
map.addAttribute("serviceTypeList", serviceTupe);
return VIEW_PATH + "/add";
//html代碼:前台遍歷取出服務類型 select的value是list(serviceTypeList)中元素的code select的text是元素的name
<div class="col-md-5">
<select id="serviceType" name="serviceType" placeholder="請選擇服務類型">
<option th:each="level : ${serviceTypeList}"
          th:value="${level.serviceCode}"
th:text="${level.serviceName}" xmlns:th="http://www.w3.org/1999/xhtml">
     </option>
</select>
<input type="hidden" th:value="${inputType}" name="inputType" id="inputType"/>
</div> <div class="col-md-5">
<select id="serviceClass" name="serviceClass" placeholder="請選擇服務類別">
    //說明一下 select的option選項是后邊的js里拼接上去的
</select>
</div>


//js代碼:當服務類型的select被觸發選擇了,執行查詢服務類型選擇的內容的下屬值,也就是A01 A02 A03或者Bf Bg Bh或者 C1 C2 C3 $("#serviceType").on("change",function () {
debugger;
var seled = $(this).val();
$("#inputType").val(seled);
var serviceText=$("#serviceType").find("option:selected").text();
var serviceVal=$("#serviceType").val();
   //去后台findServClass方法查 根據選擇的服務類型查詢出對應的下屬值
var url = rootPath + '/serv/service/findServClass';
var s = CommnUtil.ajax(url, {
serviceName: serviceText,
serviceCode: serviceVal
}, "json");
if(!!s && s.length > 0){
$("#serviceClass").empty();
var item;
$.each(s,function(i,result){
       //給serviceClass也就是第二個下拉框拼接上option選擇項
$("#serviceClass").append($("<option/>").text(result['className']).attr("value",result['classCode']));
});
}else{
$("#serviceClass").empty();
}
});

//后台java代碼 findServClass方法 @RequestMapping("/findServClass")
@ResponseBody
public Object findServClass(String serviceName,String serviceCode){
List<ServiceClass> list = new ArrayList<>();
try {
//根據serviceCode查出服務類別 serviceName沒有用到,這個參數可以不用傳的
list=sysServService.serviceClassList(serviceCode);
} catch (Exception e){
e.printStackTrace();
}
return list;//返回的list就是上邊的ajax里的s
}

說明:中間傳遞了一個serviceName沒有用到,而是用了serviceCode,這是因為在數據庫表服務類別表serviceClass表中有serviceCode服務編碼這個字段,所以只要加上where serviceCode=‘xx服務編碼’ 就可已查出對應的下屬值


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM