您的位置:首页 > 编程语言 > PHP开发

国省市县 ajax 地区级联动

2016-12-23 15:08 211 查看

国家 省 市 县/地区  地区级联动 实现

1:在HTML 页面 常常有这样的格式 点击父级元素出现子元素,原理都是懂得这里给大家来实现

<tr>
<td>
<span style="font-weight: bold">住址</span>  <br/>
国家 <select name="address" id="">
<option value="0" checked> 请选择 </option>
<?php foreach($region_list as $v):?>
<option value=<?= $v['region_id'] ?>>
<?=$v['region_name']?>
</option>
<?php endforeach;?>
</select>
</td>
</tr>

2:要记得 在html页面引入jquery文件  然后进行事件绑定 通过json的ajax传值 来获得效果 下面是代码

<script>

//定义加载函数

//把input对象委托给document对象
$(document).on("change",":input[name='address']",function(){//给动态的内容父级对象绑定change事件
//给select一个内容改变事件
// $(":input[name='region']").change(function(){
//获取region_id
var region_id=$(this).val();
//当前对向,追加时用

// alert(region_id);

$(this).nextAll().remove(); //清除一级后所有的无数据的重复追加

//将下拉框里的请选择的value值设为0,防止点击请选择的时候继续追加
if(region_id==0){
return false; //选择为空 下面的ajax请求不触发
}

//ajax请求

var url="?r=course/get"; //请求地址
$.getJSON(url,{'region_id':region_id},function(msg){
if(msg.length>0){//避免二级后面继续追加
var str='<select name="address">\
<option value="0" >...请选择...</option>';
$.each( msg, function(k,v){
str+="<option value="+ v.region_id+" >"+ v.region_name+"</option>";

});
str+="</select>";

4000
}

$(this).after(str);
}.bind(this))

//console.log( $(":input[name='address']:last").val());
$('#s_address').val($(":input[name='address']:last").val())
})
</script>

3:将父级  Id 传到后台

将 id 接到  $sql="select * from region where parent_id= $id "

   将自己元素查到 , 并 用过  echo json_encode($data)  的方法 将得到数据转(这里一般是一个二维数组)换成json格式,返回到前台,前台再处理

上边的代码 是我做一个注册用户时需要的 国家,省,市,地区/县, 的多级联动 下面是一个 需要选择省把所需要的市的展示出来,明白原理会一点jquery就可以轻松实现这个功能了

$(document).on('change','#province',function(){ //通过绑定事件
var province=$(this).val();
var str="";
$.ajax({
type:'get',
url: "{{url('getCityByPro_id')}}",
data:{pro_id:province},
dataType:'json',
success:function(msg){
str+='<select name="" id="">';
str+='<option value="">请选择城市</option>';
$.each(msg,function(k,v){
str+="<option>"+ v.region_name+"</option>";
});
str+='</select>';
$('#City').html(str);
// console.log(str);
}
});

})

4:在多提一句 在提交数据的时候只需要提交最后一个选择的地区的  id就可以  这里就需要

  $('#s_address').val($(":input[name='address']:last").val())

如果是表单提交的时候就需要 将下拉菜单的 最后一个值 赋给一个 input标签中 在不指定出现的次数的时候无法确认 name属性什么时候该出现 通过jquery来给值  在指定地方的时候 加一个name属性就可以了

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  php ajax 地区联动