layui 四级联动(省、市、区、小区) 链接数据库版本带后台、图片上传
html代码:
<div class="layui-form-item"> <label class="layui-form-label">联系地址</label> <div class="layui-input-block"> <div class="fl mr10" style="width:170px;"> <select name="provinceid" lay-verify="required" lay-filter="state"> <option value="">请选择</option> </select> </div> <div class="fl mr10" style="width:170px;"> <select name="townid" lay-verify="required" lay-filter="state"> <option value="">请选择</option> </select> </div> <div class="fl" style="width:170px;"> <select name="countyid" lay-verify="required" lay-filter="state"> <option value="">请选择</option> </select> </div> </div> </div> <div class="layui-form-item"> <label class="layui-form-label"></label> <div class="layui-input-block" id="szxq"> <select name="villageId" lay-verify="required" lay-filter="state"> <option value="" placeholder="请选择您所在的小区、大厦或学校"></option> </select> </div> </div>js:
layui.use('form', function () { var urls; //如果有需要到镇的改改就可以实现 var form = layui.form(), $ = layui.jquery; var url = '${ctx}/front/getArea'; //省市区请求地址 var urlVillage = '${ctx}/front/getVillage'; //小区请求地址 var province = "河南省"; //编辑需要的省 var city = "郑州市"; //编辑需要的市 var district = "高新区"; //编辑需要的县/区 getJSON(url + "?parentId=0", $("select[name='provinceid']").closest("div")); form.on('select(state)', function (data) { console.log(data); //如果选中的是区县 if (data.elem.name == "countyid") { urls = urlVillage + "?addrareaId=" + data.value; getJSON(urls, $("#szxq"), '0'); } else { //选取城市的话 根据城市名称定位到当前城市 if (data.elem.name == "townid") { theLocation(data.elem[data.elem.selectedIndex].text); } urls = url + "?parentId=" + data.value; getJSON(urls, $(data.elem).closest("div").next(), '1'); } }); function getJSON(urls, even, flag) { $.getJSON(urls, function (json) { var pid = 0; var name = even.find("select").attr("name"); var select = "<select name=\"" + name + "\" lay-filter=\"state\">"; select += "<option value=\"\">请选择 </option>"; $(json).each(function () { select += "<option value=\"" + this.id + "\""; if (province == this.value || city == this.value || district == this.value) { select += " selected=\"selected\" "; pid = this.id; } if (flag == "0") { select += ">" + this.villagename + "</option>"; } else { select += ">" + this.name + "</option>"; } }); select += "</select>"; even.html(select); var nextName = even.next().find("select").attr("name"); even.next().html("<select name=\"" + nextName + "\" lay-filter=\"state\"><option value=\"\">请选择 </option></select>"); form.render('select'); if (pid != 0) { getJSON(url + "?parentId=" + pid, even.next()); } }); } //监听提交 form.on('submit(wanshanInfo)', function (data) { var flag=true; $('input:checkbox[name="jxjd"]:checked').each(function() { if($(this).attr("title")=="小学"){ var len = $('#tr_0 input:checkbox[name="jxkm"]:checked').length; if(len==0){ alert("请选择小学科目"); flag= false; } }else if($(this).attr("title")=="初中"){ var len = $('#tr_1 input:checkbox[name="jxkm"]:checked').length; if(len==0){ alert("请选择初中科目"); flag= false; } }else{ var len = $('#tr_2 input:checkbox[name="jxkm"]:checked').length; if(len==0){ alert("请选择高中科目"); flag= false; } } }); return flag; }); //监听教学阶段的checkbox form.on('checkbox(jiaoxuejieduan)', function (data) { if ($("#xfkemu").css("display") == 'none') { $("#xfkemu").css("display", 'block'); } //如果选中 if (data.elem.checked) { if (data.elem.title == "小学") { if ($("#tr_0").css("display") == 'none') { $("#tr_0").css("display", 'block'); } } else if (data.elem.title == "初中") { if ($("#tr_1").css("display") == 'none') { $("#tr_1").css("display", 'block'); } } else { if ($("#tr_2").css("display") == 'none') { $("#tr_2").css("display", 'block'); } } } else { if (data.elem.title == "小学") { if ($("#tr_0").css("display") == 'block') { $("#tr_0").css("display", 'none'); } } else if (data.elem.title == "初中") { if ($("#tr_1").css("display") == 'block') { $("#tr_1").css("display", 'none'); } } else { if ($("#tr_2").css("display") == 'block') { $("#tr_2").css("display", 'none'); } } } }); //监听科目的checkbox form.on('checkbox(kemuInput)', function (data) { //教学类别 var jxjd = $(data.elem).parent().parent().children("td").eq(0).text(); //选中的科目 var checkedKm = data.elem.title; //拼接科目 var newstr = jxjd + "-" + checkedKm + ","; //如果选中的话追加 取消选中的话 删除掉 var textValue = $("#jxkmTextarea").val(); if (data.elem.checked) { $("#jxkmTextarea").val(textValue + newstr); } else { if (textValue.indexOf(newstr) >= 0) { var qihuanhou = textValue.replace(new RegExp(newstr), ""); $("#jxkmTextarea").val(qihuanhou); } } }); //监听机构类型的radio form.on('radio(jigouleixing)', function (data) { var title = data.elem.title; if (title == "个人") { $("#zhngjianleixing").css("display", 'block'); $("#shouczhjzhao").css("display", 'block'); $("#zhengjzzhengm").css("display", 'block'); $("#frdbxm").css("display", 'none'); $("#yyzzzch").css("display", 'none'); $("#yyzzzp").css("display", 'none'); $("#legalname").removeAttr("lay-verify"); $("#businesslicenseno").removeAttr("lay-verify"); form.render(); } else { $("#zhngjianleixing").css("display", 'none'); $("#shouczhjzhao").css("display", 'none'); $("#zhengjzzhengm").css("display", 'none'); $("#frdbxm").css("display", 'block'); $("#yyzzzch").css("display", 'block'); $("#yyzzzp").css("display", 'block'); $("#legalname").attr("lay-verify", 'required'); $("#businesslicenseno").attr("lay-verify", 'required'); form.render(); } }); });
//图片上传 layui.use('upload', function () { //上传头像 layui.upload({ url: '${ctx}/front/fileUpload' , elem: '#touxiang' //指定原始元素,默认直接查找class="layui-upload-file" , success: function (res) { LAY_demo_upload.src = res.fileUrl; $("#photopath").val(res.fileUrl); } }); //上传手持证件照 layui.upload({ url: '${ctx}/front/fileUpload' , elem: '#sczjzInput' //指定原始元素,默认直接查找class="layui-upload-file" , success: function (res) { sczjz.src = res.fileUrl; $("#handcardpath").val(res.fileUrl); } }); //上传证件照正面 layui.upload({ url: '${ctx}/front/fileUpload' , elem: '#zjzzmInput' //指定原始元素,默认直接查找class="layui-upload-file" , success: function (res) { zjzzm.src = res.fileUrl; $("#cardpath").val(res.fileUrl); } }); //上传营业执照照片 layui.upload({ url: '${ctx}/front/fileUpload' , elem: '#yyzzzpInput' //指定原始元素,默认直接查找class="layui-upload-file" , success: function (res) { yyzzzpDiv.src = res.fileUrl; $("#businesslicensepath").val(res.fileUrl); } }); });
java后台:
@ResponseBody @RequestMapping(value="getArea", method={RequestMethod.POST,RequestMethod.GET}) public List<Area> changeArea(HttpServletRequest request, @RequestParam String parentId){ List<Area> allList = areaService.findAll(); List<Area> cityList = new ArrayList<Area>(); for(Area area : allList){ if(parentId.equals(area.getParentId())){ cityList.add(area); } } return cityList; } /** * 根据查询条件搜索对应的小区 * @param request * @param chaVillage * @return JSON */ @ResponseBody @RequestMapping(value="getVillage", method={RequestMethod.POST,RequestMethod.GET}) public List<ChaVillage> getVillage(HttpServletRequest request, ChaVillage chaVillage){ List<ChaVillage> allList = chaVillageService.findList(chaVillage); return allList; }上传文件对应的controller
/* * 采用file.Transto 来保存上传的文件 */ @RequestMapping("fileUpload") @ResponseBody public Map<String, Object> fileUpload2(@RequestParam(value = "file", required = false) CommonsMultipartFile file, HttpServletRequest request) throws IOException { Map<String, Object> map = new HashMap<>(); String path = request.getSession().getServletContext().getRealPath("/frontUpload"); String orginalName = file.getOriginalFilename(); String fileName = new Date().getTime()+"-"+orginalName; File targetFile = new File(path, fileName); if (!targetFile.exists()) { targetFile.mkdirs(); } //通过CommonsMultipartFile的方法直接写文件(注意这个时候) file.transferTo(targetFile); map.put("fileUrl", "/frontUpload/" + fileName); return map; }