mui picker省市区三级联动使用方法(包括设置默认值)

请参考mui 文档http://dev.dcloud.net.cn/mui/ui/#placeholder

mui官方解释:http://dev.dcloud.net.cn/mui/ui/#picker

mui官方demo:http://www.dcloud.io/hellomui/examples/picker.html

1.引入

<script type="text/javascript" src="js/mui.min.js"></script>
    <script type="text/javascript" src="js/mui.picker.min.js"></script>
    <script type="text/javascript" src="js/city.data-3.1.js??ver=20190116"></script>

2.初始化组件

       (function($, doc) {
        $.ready(function() {
            /**
             * 获取对象属性的值
             * 主要用于过滤三级联动中,可能出现的最低级的数据不存在的情况,实际开发中需要注意这一点;
             * @param {Object} obj 对象
             * @param {String} param 属性名
             */
            var _getParam = function(obj, param) {
                return obj[param] || '';
            };
            //-----------------------------------------
            //					//级联示例
            var cityPicker3 = new $.PopPicker({
                layer: 3
            });
            cityPicker3.setData(cityData3);
            var showCityPickerButton = doc.getElementById('cityResult3');
            var cityResult3 = doc.getElementById('cityResult3');
            showCityPickerButton.addEventListener('tap', function(event) {
                console.log(event)
                document.activeElement.blur();
                
                cityPicker3.show(function(items) {
                    console.log(59, items)
                    cityResult3.innerText = _getParam(items[0], 'text') + " " + _getParam(items[1], 'text') + " " + _getParam(items[2], 'text');
                    provinceCode=_getParam(items[0], 'value');
                    provinceName= _getParam(items[0], 'text');
                    cityCode=_getParam(items[1], 'value')
                    cityName= _getParam(items[1], 'text');
                    areaCode=_getParam(items[2], 'value')
                    areaName= _getParam(items[2], 'text');
                    //localStorage.setItem("cityNameSearch",cityName);
                    console.log(provinceCode,cityCode)



                    //返回 false 可以阻止选择框的关闭
                    //return false;
                });
            }, false);
        });
    })(mui, document);

 

3.编辑时要设置默认值

如果数据的层级有三层,cityPicker3.pickers将会有三个数组,如果层级为1,那么就是1个数组

cityPicker3.pickers[0].setSelectedIndex[j]

cityPicker3.pickers[1].setSelectedIndex[k]

cityPicker3.pickers[2].setSelectedIndex[n]

    (function($, doc) {
        $.ready(function() {
            /**
             * 获取对象属性的值
             * 主要用于过滤三级联动中,可能出现的最低级的数据不存在的情况,实际开发中需要注意这一点;
             * @param {Object} obj 对象
             * @param {String} param 属性名
             */
            var _getParam = function(obj, param) {
                return obj[param] || '';
            };
            //-----------------------------------------
            //					//级联示例
            var cityPicker3 = new $.PopPicker({
                layer: 3
            });
            cityPicker3.setData(cityData3);
            var showCityPickerButton = doc.getElementById('cityResult3');
            var cityResult3 = doc.getElementById('cityResult3');
            showCityPickerButton.addEventListener('tap', function(event) {
                console.log(event)
                document.activeElement.blur();
                if(cityResult3.innerText!=''&&isNotBlank(sessionStorage.getItem("linkinfo"))){
                    var arr=cityData3;
                    var linkinfo=JSON.parse(sessionStorage.getItem("linkinfo"));
                    var a;
                    if(linkinfo.province.indexOf('市')!=-1){
                        var str = linkinfo.province;
                        var reg = new RegExp("市");
                         a = str.replace(reg,"");
                    }else{
                        a = linkinfo.province;
                    }
                    var b=linkinfo.city;
                    var c=linkinfo.district;
                    console.log('省市区信息',linkinfo)
                for(i=0;i<arr.length;i++){
                    if(arr[i].text==a){
                        var kcity=arr[i].children;
                        cityPicker3.pickers[0].setSelectedIndex(i);
                        for(j=0;j<kcity.length;j++){
                            if(kcity[j].text==b){
                                cityPicker3.pickers[1].setSelectedIndex(j);
                                var harea=kcity[j].children;
                                for(n=0;n<harea.length;n++) {
                                    if(harea[n].text==c)
                                        cityPicker3.pickers[2].setSelectedIndex(n);
                                }
                            }
                        }

                    }
                }
                }
                cityPicker3.show(function(items) {
                    console.log(59, items)
                    cityResult3.innerText = _getParam(items[0], 'text') + " " + _getParam(items[1], 'text') + " " + _getParam(items[2], 'text');
                    provinceCode=_getParam(items[0], 'value');
                    provinceName= _getParam(items[0], 'text');
                    cityCode=_getParam(items[1], 'value')
                    cityName= _getParam(items[1], 'text');
                    areaCode=_getParam(items[2], 'value')
                    areaName= _getParam(items[2], 'text');
                    //localStorage.setItem("cityNameSearch",cityName);
                    console.log(provinceCode,cityCode)



                    //返回 false 可以阻止选择框的关闭
                    //return false;
                });
            }, false);
        });
    })(mui, document);

4.效果

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值