layer表单元素 三级联动 省市县选择框动态渲染问题解决
2017-08-08 00:00
996 查看
$(document).ready(function() {
layui.use(['layer', 'form'], function(){
var layer = layui.layer
,form = layui.form();
//获取省市县value
var isprovince = $('#area').attr('province');
var iscity = $('#area').attr('city');
var isdistrict = $('#area').attr('district');
var ajaxUrl = "../../ajax/get-city-list";
//选择省份
$("#province option").each(function(){
var $me = $(this);
if($me.val() == isprovince) {
$me.attr("selected",true);
}else{
$me.attr("selected",false);
}
});
//请求当前省份的所有市区
$.ajax({
type: "get",
url: ajaxUrl,
async: true,
data: {
"fid": isprovince
},
dataType: "json",
success: function(data) {
//渲染市区
$("#city").html("");
$("#city").append("<option value=''>请选择市</option>");
$.each(data, function(i, n) {
$("#city").append("<option value='" + n.area_id + "'>" + n.name + "</option>");
});
//选择市区
$("#city option").each(function(){
var $my = $(this);
if($my.val() == iscity) {
$my.attr("selected",true);
}else{
$my.attr("selected",false);
}
});
//最后重新渲染
form.render('select');
},
error: function() {
alert("错误");
}
});
//请求当前市区的所有县
$.ajax({
type: "get",
url: ajaxUrl,
async: true,
data: {
"fid": iscity
},
dataType: "json",
success: function(data) {
//渲染县
$("#district").html("");
$("#district").append("<option value=''>请选择县/区</option>");
$.each(data, function(i, n) {
$("#district").append("<option value='" + n.area_id + "'>" + n.name + "</option>");
})
//选择县
$("#district option").each(function(){
var $one = $(this);
if($one.val() == isdistrict) {
$one.attr("selected",true);
}else{
$one.attr("selected",false);
}
});
//最后重新渲染
form.render('select');
}
});
$('.js-sign').on('click', function() {
layer.open({
type: 2,
area: ['910px', '959.7px'],
title: ['签到','text-align:center,font-size:18px'],
content: ['/admin/sign/to-sign-page','no'], //不出现滚动条,content: ['http:', 'no']
anim:1,
closeBtn: 2
});
});
});
$('.btnsub').on('click',function(){
var province = $('#province+div .layui-this').attr('lay-value');
var city = $('#city+div .layui-this').attr('lay-value');
var district = $('#district+div .layui-this').attr('lay-value');
var disease = $('#disease').text();
$.ajax({
url:'/admin/user/save-user-data',
type:'post',
dataType:'json',
data:{province:province,city:city,district:district,common_diseases:disease},
beforeSend:function(){
layer.msg('正在保存...');
$('.btnsub').attr({disabled:"disabled"});
$('.btnsub').text('正在保存');
},
success:function(res){
if(res.code == 1){
layer.msg('保存成功!');
}else{
layer.msg('error');
}
},
complete: function(){
$(".btnsub").removeAttr("disabled");
$('.btnsub').text('保存');
},
error : function(XMLHttpRequest, textStatus, errorThrown) {
layer.msg('网络失败,请刷新页面后重试');
}
});
});
});
<div class="layui-form-item">
<label class="layui-form-label">省/市/区</label>
<div class="layui-input-block">
<div class="layui-input-inline">
<select name="province" lay-verify="province" lay-filter="province"
id="province">
<option value="">请选择省</option>
<?php foreach ($provinceList as $key => $value):?>
<option value="<?= $value['area_id'] ?>"><?= $value['name'] ?></option>
<?php endforeach;?>
</select>
</div>
<div class="layui-input-inline">
<select name="city" lay-filter="city" id="city">
<option value="">请选择市</option>
</select>
</div>
<div class="layui-input-inline">
<select name="district" lay-filter="district" id="district">
<option value="">请选择县/区</option>
</select>
</div>
</div>
</div>
layui.use(['layer', 'form'], function(){
var layer = layui.layer
,form = layui.form();
//获取省市县value
var isprovince = $('#area').attr('province');
var iscity = $('#area').attr('city');
var isdistrict = $('#area').attr('district');
var ajaxUrl = "../../ajax/get-city-list";
//选择省份
$("#province option").each(function(){
var $me = $(this);
if($me.val() == isprovince) {
$me.attr("selected",true);
}else{
$me.attr("selected",false);
}
});
//请求当前省份的所有市区
$.ajax({
type: "get",
url: ajaxUrl,
async: true,
data: {
"fid": isprovince
},
dataType: "json",
success: function(data) {
//渲染市区
$("#city").html("");
$("#city").append("<option value=''>请选择市</option>");
$.each(data, function(i, n) {
$("#city").append("<option value='" + n.area_id + "'>" + n.name + "</option>");
});
//选择市区
$("#city option").each(function(){
var $my = $(this);
if($my.val() == iscity) {
$my.attr("selected",true);
}else{
$my.attr("selected",false);
}
});
//最后重新渲染
form.render('select');
},
error: function() {
alert("错误");
}
});
//请求当前市区的所有县
$.ajax({
type: "get",
url: ajaxUrl,
async: true,
data: {
"fid": iscity
},
dataType: "json",
success: function(data) {
//渲染县
$("#district").html("");
$("#district").append("<option value=''>请选择县/区</option>");
$.each(data, function(i, n) {
$("#district").append("<option value='" + n.area_id + "'>" + n.name + "</option>");
})
//选择县
$("#district option").each(function(){
var $one = $(this);
if($one.val() == isdistrict) {
$one.attr("selected",true);
}else{
$one.attr("selected",false);
}
});
//最后重新渲染
form.render('select');
}
});
$('.js-sign').on('click', function() {
layer.open({
type: 2,
area: ['910px', '959.7px'],
title: ['签到','text-align:center,font-size:18px'],
content: ['/admin/sign/to-sign-page','no'], //不出现滚动条,content: ['http:', 'no']
anim:1,
closeBtn: 2
});
});
});
$('.btnsub').on('click',function(){
var province = $('#province+div .layui-this').attr('lay-value');
var city = $('#city+div .layui-this').attr('lay-value');
var district = $('#district+div .layui-this').attr('lay-value');
var disease = $('#disease').text();
$.ajax({
url:'/admin/user/save-user-data',
type:'post',
dataType:'json',
data:{province:province,city:city,district:district,common_diseases:disease},
beforeSend:function(){
layer.msg('正在保存...');
$('.btnsub').attr({disabled:"disabled"});
$('.btnsub').text('正在保存');
},
success:function(res){
if(res.code == 1){
layer.msg('保存成功!');
}else{
layer.msg('error');
}
},
complete: function(){
$(".btnsub").removeAttr("disabled");
$('.btnsub').text('保存');
},
error : function(XMLHttpRequest, textStatus, errorThrown) {
layer.msg('网络失败,请刷新页面后重试');
}
});
});
});
<div class="layui-form-item">
<label class="layui-form-label">省/市/区</label>
<div class="layui-input-block">
<div class="layui-input-inline">
<select name="province" lay-verify="province" lay-filter="province"
id="province">
<option value="">请选择省</option>
<?php foreach ($provinceList as $key => $value):?>
<option value="<?= $value['area_id'] ?>"><?= $value['name'] ?></option>
<?php endforeach;?>
</select>
</div>
<div class="layui-input-inline">
<select name="city" lay-filter="city" id="city">
<option value="">请选择市</option>
</select>
</div>
<div class="layui-input-inline">
<select name="district" lay-filter="district" id="district">
<option value="">请选择县/区</option>
</select>
</div>
</div>
</div>
相关文章推荐
- 快速解决js动态改变dom元素属性后页面及时渲染的问题
- 快速解决js动态改变dom元素属性后页面及时渲染的问题
- jQuery - 动态添加、删除form表单项(附:新增项数据无法提交问题解决)
- 解决Js解析xml浏览器不兼容问题及省市区三级联动实现
- 动态代理解决表单提交的中文乱码问题
- 解决EasyUI动态添加标签渲染问题
- jquery mobile动态添加元素之后不能正确渲染解决方法说明
- jquery动态添加元素事件失效问题解决方法
- 解决Js解析xml浏览器不兼容问题及省市区三级联动实现
- 解决multipart/form-data表单中传递参数问题(动态更改表单提交URL)
- 解决multipart/form-data表单中传递参数问题(动态更改表单提交URL)
- 解决jquery动态创建元素绑定事件失效问题
- 表单元素和文字垂直居中对齐问题解决整理
- 参数表单下拉数据集多选联动问题及解决办法
- jquery mobile动态添加元素之后不能正确渲染解决方法说明
- jquery动态添加元素事件失效问题解决方法 (自测过)
- Extjs form表单 动态设置标签的隐藏和显示 (解决问题)
- 两种js动态三级联动下拉表单测试
- angularJs中ng-repeat遍历动态生成的表单元素绑定ng-model无效的问题
- jquerymobile动态添加元素之后不能正确渲染解决方法