1. 程式人生 > >國省市縣 ajax 地區級聯動

國省市縣 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屬性就可以了