ajax + php 省市区三级联动

效果图:

数据库表:

html代码

<tr><td colspan="2">
        <p class="short-input ue-clear">
        
            <label>所在地:</label>
            <select name="provinceid">
            <?php echo Ousuclass::all_html_option($pros,"id");?>
            </select>      
            <select name="cityid">
                <?php if(isset($cities)):?>
                <?php echo Ousuclass::all_html_option($cities,"id");?>
                <?php else:?>
                <option value="">请先选择所在省</option>
                <?php endif;?>
            </select>      
            <select name="countyid">
                <?php if(isset($counties)):?>
                <?php echo Ousuclass::all_html_option($counties,"id");?>
                <?php else:?>
                <option value="">请先选择所在地</option>
                <?php endif;?>
            </select>
            <span><em>*</em></span>
        </p>
        </td></tr>
        <tr>
            <td colspan="2">
                <p class="long-input ue-clear">

                    <label>通讯地址:</label>
                    <input type="text" name="companyaddress"/>
                </p>
            </td>
        </tr>

ajax代码

 <?php if("create"==$url_method):?>
        $("input[name=companyname]").change(function () {
        $("input[name=username]").val($("input[name=companyname]").val());
         });
    $("select[name=provinceid]").val("330000"); //写死,默认省份为浙江省
    var url = "<?php echo "/".$url_module."/".$url_model?>/change/330000";
    $.ajax({
        type: "Post",
        url: url,
        data: {"id": "330000"},
        success: function (res) {
            var r = $.parseJSON(res);
            if (r.ret == 0) {
                var select = $("select[name=cityid]");
                select.empty();
                select.append("<option value=''></option>");
                for (var i in r.obj) { //for...in 语句用于对数组或者对象的属性进行循环操作,for (变量 in 对象){}
                    select.append("<option value='" + r.obj[i].id + "'>" + r.obj[i].name + "</option>");
                }
                $("select[name=cityid]").val("330300");//写死,默认城市为温州
                var url = "<?php echo "/".$url_module."/".$url_model?>/change/330300";
                $.ajax({
                    type: "Post",
                    url: url,
                    data: {"id": "330300"},
                    success: function (res) {
                        var r = $.parseJSON(res);
                        if (r.ret == 0) {
                            var select = $("select[name=countyid]");
                            select.empty();
                            select.append("<option value=''></option>");
                            for (var i in r.obj) {
                                select.append("<option value='" + r.obj[i].id + "'>" + r.obj[i].name + "</option>");
                            }
                        } else {
                            alert(r.msg);
                        }
                    }
                });
            } else {
                alert(r.msg);
            }
        }
    });
    <?php endif;?>

function change() {
    $("select[name=provinceid]").change(function () {
        $("select[name=countyid]").empty();
        $("select[name=countyid]").append("<option value=''>请先选择所在地</option>");
        var pid = $(this).val();
        var url = "<?php echo "/".$url_module."/".$url_model?>/change/" + pid;
        if ("" == pid)
            return;
        $.ajax({
            type: "Post",
            url: url,
            data: {"id": pid},
            success: function (res) {
                var r = $.parseJSON(res);
                if (r.ret == 0) {
                    var select = $("select[name=cityid]");
                    select.empty();
                    select.append("<option value=''></option>");
                    for (var i in r.obj) {
                        select.append("<option value='" + r.obj[i].id + "'>" + r.obj[i].name + "</option>");
                    }
                } else {
                    alert(r.msg);
                }
            }
        });
        //改变地址
        $("input[name=companyaddress]").val($(this).find("option:selected").text());  // $(this).find("option:selected").text();表示下拉框被选中的option标签的值
    });
    $("select[name=cityid]").change(function () {
        var pid = $(this).val();
        var url = "<?php echo "/".$url_module."/".$url_model?>/change/" + pid;
        if ("" == pid)
            return;
        $.ajax({
            type: "Post",
            url: url,
            data: {"id": pid},
            success: function (res) {
                var r = $.parseJSON(res);
                if (r.ret == 0) {
                    var select = $("select[name=countyid]");
                    select.empty();
                    select.append("<option value=''></option>");
                    for (var i in r.obj) {
                        select.append("<option value='" + r.obj[i].id + "'>" + r.obj[i].name + "</option>");
                    }
                } else {
                    alert(r.msg);
                }
            }
        });
        //改变地址
        $("input[name=companyaddress]").val($("select[name=provinceid]").find("option:selected").text() + " " + $(this).find("option:selected").text());
    });
    $("select[name=countyid]").change(function () {
        //改变地址
        $("input[name=companyaddress]").val($("select[name=provinceid]").find("option:selected").text() + " " + $("select[name=cityid]").find("option:selected").text() + " " + $(this).find("option:selected").text());
    });

php代码

<?php

protected function _getGlobalData($data){
        $data = parent::_getGlobalData($data);

        //省
        $result = $this->mydb->find("select administrativedivisioncode as id,administrativedivisionname as name from dictxzqdms where level = 1");  //dictxzqdms表名
        $data["pros"] = $result["obj"];
        if ($this->input->server('REQUEST_METHOD') == 'GET'&&("edit"==$this->url_method||"check"==$this->url_method)){
            if(isset($data['datalist'])){
                if(isset($data['datalist']['provinceid'])){
                    $result = $this->mydb->find("select administrativedivisioncode as id,administrativedivisionname as name from dictxzqdms where parentcode='".$data['datalist']['provinceid']."'");
                    $data["cities"] = $result["obj"];
                }
                if(isset($data['datalist']['cityid'])){
                    $result = $this->mydb->find("select administrativedivisioncode as id,administrativedivisionname as name from dictxzqdms where parentcode='".$data['datalist']['cityid']."'");
                    $data["counties"] = $result["obj"];
                }
            }
        }
        return $data;    
    }

/*
     * 省市县级联
     */
    public function change($proid=""){
        if(""==$proid){
            $result["ret"] = 1;
            $result["msg"] = "no id";
            echo json_encode($result);
            exit;
        }
        $sql = "select administrativedivisioncode as id,administrativedivisionname as name from dictxzqdms where parentcode=$proid";
        $re = $this->mydb->find($sql);
        $result["ret"] = 0;
        $result["obj"] = $re["obj"];
        echo json_encode($result);
    }

?>

posted on 2015-07-22 15:58  勤奋者努力着  阅读(555)  评论(0编辑  收藏  举报

导航