国省市县 ajax 地区级联动

地区级联动实现
本文介绍了一个HTML页面中地区级联动的选择框实现方法,利用PHP生成初始选项,通过jQuery监听选择变化并使用AJAX动态加载下一级选项。

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

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>";
                  }

                $(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属性就可以了





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值