地区二级联动+input模糊查询

<script type="text/javascript">
var TempArr=[];//存储option  
$(function(){  
    /*先将数据存入数组*/  
    $("#province option").each(function(index, el) {  
        TempArr[index] = $(this).text();  
    });  
    $(document).bind('click', function(e) {    
        var e = e || window.event; //浏览器兼容性     
        var elem = e.target || e.srcElement;    
        while (elem) { //循环判断至跟节点,防止点击的是div子元素     
            if (elem.id && (elem.id == 'province' || elem.id == "txt_province")) {    
                return;    
            }    
            elem = elem.parentNode;    
        }    
        $('#province').css('display', 'none'); //点击的不是div或其子元素     
    });    
})  
 
 function changeF(this_) {
    $(this_).prev("input").val($(this_).find("option:selected").text());  
    $("#province").css({"display":"none"});  
}   
function setfocus(this_){  
    $("#province").css({"display":""});  
    var select = $("#province");  
    for(i=0;i<TempArr.length;i++){
        var option = $("<option></option>").text(TempArr[i]);
        select.append(option);  
    }
    setinput(this_);  
}  
 
function setinput(this_){  
    var select = $("#province").val();  
    select.html("");  
    for(i=0;i<TempArr.length;i++){  
        //若找到以txt的内容开头的,添option  
        if(TempArr[i].substring(0,this_.value.length).indexOf(this_.value)==0){  
            var option = $("<option></option>").text(TempArr[i]);  
            select.append(option);  

        }  
    }  
}  

</script>

-------------------------------------------------------------------------------------------------------------------------------------------------

<script>
var jsonLocation = JSON.parse('<?php echo json_encode($locations);?>');
function loadCity() {
    //jQuery.parseJSON
    var target = $('#city');
    var province_code = $('#province').val();
    if (province_code == 0) {
        target.html('<option value="0">请选择</option>');
    } else {
        /* alert('test' + province_code); */
        var html = '<option value="0">请选择</option>';
        var jsonList = jsonLocation[province_code];
        for(var i in jsonList){
            /* console.log(jsonList[i]); */
            html += '<option value="' + jsonList[i].id + '">' + jsonList[i].name + '</option>';
        }
        target.html(html);
    }
}
</script>

-----------------------------------------------------------------------------------------------------------

<input type="text" class="form-control signedPersonIdCard"  style = "width:100%;" name="txt_province" id="txt_province"  οnfοcus="setfocus(this)"  οninput="setinput(this);" placeholder="省份/直辖市"></input>
                        <select name="province" id="province"  style = "display:none; position: fixed;z-index: 100;width:161px;" size="4" οnchange="javascript:changeF(this);loadCity();">
                           <!-- <option value="" selected>省份/直辖市</option> -->
                           <volist name="locations[0]" id="locations[0]" >
                                <option value="{$locations[0]['id']}" {$locations[0]['id']==$city[0]['province']?'selected':''}>{$locations[0]['name']}</option>
                           </volist>
                        </select>
                     </div>
                     <div class="col-sm-6">
                        <input type="text" class="form-control signedPersonIdCard"  style = "width:100%;" name="txt_city" id="txt_city" οnfοcus="setfocuss(this)" οninput="setinputs(this);" placeholder="市/县"></input>
                        <select name="city" id="city" style = "display:none; position: fixed;z-index: 100;width:161px;" size="4" οnchange="changeFs(this)">
                          <!-- <option value="" selected>市/县</option> -->
                        </select>

-----------------------------------------------------------------------------------------------------------

控制器获取列表

/**
     * 获取地区列表
     */
    public function getList() {
        $Area = M ( 'area' );
        $ret = array ();
        $rowset = $Area->field ( array (
                'id',
                'name',
                'parent_id',
                'layer'
        ) )->order ( 'id asc,layer,parent_id' )->select ();
        foreach ( $rowset as $row ) {
            // 省
            if ($row ['layer'] == 1) {
                $ret [0] [] = array (
                        'id' => $row ['id'],
                        'name' => $row ['name'],
                        'layer' => $row ['layer']
                );
            } else {
                $ret [$row ['parent_id']] [] = array (
                        'id' => $row ['id'],
                        'name' => $row ['name'],
                        'layer' => $row ['layer']
                );
            }
        }
        return $ret;
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值