页面部分代码:
<div class="col-md-6">
<div class="form-group">
<label class="control-label col-md-3">所在省</label>
<div class="col-md-9">
<select name="province" required id="province" class="form-control" οnclick="chooseMarket();">
<option selected value="">选择所在的省份</option>
<c:forEach var="item" items="${provinces}" varStatus="status">
<option value="${item.name}">${item.name}</option>
</c:forEach>
</select>
</div>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label class="control-label col-md-3">所在市</label>
<div class="col-md-9">
<select id="market" name="city" required class="form-control" οnclick="chooseArea();" >
<option selected value="">请选择所在的市</option>
</select>
</div>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label class="control-label col-md-3">所在区/县</label>
<div class="col-md-9">
<select name="county" required id="area" class="form-control">
<option selected value="">请选择所在的区/县</option>
</select>
</div>
</div>
</div>
后台查询数据 前台用js遍历(js追加option,并实现联动效果)
JS部分代码:
function chooseMarket() {
var options=$("#province option:selected");
if(options.text()!="选择所在的省份"){
$.post("/city/chooseMarket",{"name":options.val()},function (data) {
for(var i=0; i<data.length; i++){
$("#market").append('<option value="' + data[i].name + '">' + data[i].name + '</option>')
};
var name=data[0].name;
defaultNext(name);
});
}
$("#market").empty();
$("#area").empty();
}
function chooseArea() {
var options=$("#market option:selected");
if(options.text()!="请选择所在的市"){
$.post("/city/chooseArea",{"name":options.val()},function (data) {
for(var i=0; i<data.length; i++){
$("#area").append('<option value="' + data[i].name + '">' + data[i].name + '</option>')
};
});
}
$("#area").empty();
}
function defaultNext(name) {
$.post("/city/defaultNext",{"name":name},function (data) {
for(var i=0; i<data.length; i++){
$("#area").append('<option value="' + data[i].name + '">' + data[i].name + '</option>')
};
});
$("#area").empty();
}
后台部分代码:
@RequestMapping(value = "/chooseMarket")
@ResponseBody
public List<City> chooseMarket(HttpServletRequest request,@RequestParam String name){
ParamMap paramMap=new ParamMap(request);
paramMap.put("parentId", cityService.selectByName(name).getId());
return cityService.chooseNext(paramMap);
}
@RequestMapping(value = "/chooseArea")
@ResponseBody
public List<City> chooseArea(HttpServletRequest request,@RequestParam String name){
ParamMap paramMap=new ParamMap(request);
paramMap.put("parentId", cityService.selectByName(name).getId());
return cityService.chooseNext(paramMap);
}
@RequestMapping(value = "/defaultNext")
@ResponseBody
public List<City> defaultNext(HttpServletRequest request,@RequestParam String name){
ParamMap paramMap=new ParamMap(request);
paramMap.put("parentId", cityService.selectByName(name).getId());
return cityService.chooseNext(paramMap);
}
可以实现的效果,如图