野原新之助
野原新之助
  • 发布:2015-09-02 09:29
  • 更新:2017-07-04 18:06
  • 阅读:12515

多级PopPicker怎么设置默认值

分类:MUI

多级PopPicker怎么设置默认值,用listpicker连续多级设置,第二级无法设置,滚动完第一级之后才会出现第二级,第二级无法滚动到指定位置

在PopPicker插件中添加了方法,第二级无法选择

setSelectedValue : function(arr) {  
            var self = this;  
            if(arr){  
                if(typeof(arr)=="string"){  
                    self.pickers[0].setSelectedValue(arr);  
                }else if(arr instanceof Array){  
                    if(arr.length>0){  
                        if(self.pickers&&self.pickers.length>0){  
                            for(var i=0;i<self.pickers.length;i++){  
                                if(arr[i]){  
                                    self.pickers[i].setSelectedValue(arr[i]);  
                                }  
                            }  
                        }  
                    }  
                }  
            }  
        },  
2015-09-02 09:29 负责人:无 分享
已邀请:
l***@126.com

l***@126.com

根本不需要这么复杂,利用setTimeout()即可解决:
var provCode = "430000";
var cityCode = "430200";
cityPicker.pickers[0].setSelectedValue(provCode, 0, function() {
setTimeout(function() {
cityPicker.pickers[1].setSelectedValue(cityCode);
}, 100);
});

  • shidaozi

    这样确实可以,如果有三级,则延迟200ms。原因却是为何呢。

    2017-03-04 17:54

  • 3***@qq.com

    因为这个插件加载太慢

    2017-07-04 18:04

野原新之助

野原新之助 (作者)

这个有没有人来解决啊

野原新之助

野原新之助 (作者)

管理员哥哥们

野原新之助

野原新之助 (作者)

求救了

houfeng2016

houfeng2016

mui 的版本是?

  • 野原新之助 (作者)

    就是最新的,一直都是这样

    2015-10-19 14:43

  • houfeng2016

    “MUI 版本号、设备型号、操作系统版本”,提供一下。

    2015-10-19 14:49

Snoopy

Snoopy

//设置选中值  
        setValue : function(arr) {  
            var self = this;  
            if(arr){  
                if(typeof(arr)=="string"){  
                    self.waitToSetValues = [arr];  
                }else if(arr instanceof Array){  
                    self.waitToSetValues = arr;  
                }  
                self.pickers[0].setSelectedValue(self.waitToSetValues.shift());  
            }  
        },
_createListPicker: function() {  
            var self = this;  
            var layer = self.options.layer || 1;  
            var width = (100 / layer) + '%';  
            self.pickers = [];  
            for (var i = 1; i <= layer; i++) {  
                var picker = $.dom(pickerBuffer)[0];  
                picker.style.width = width;  
                self.body.appendChild(picker);  
                $(picker).listpicker();  
                self.pickers.push(picker);  
                picker.addEventListener('change', function(event) {  
                    var nextPicker = this.nextSibling;  

                    if (nextPicker && nextPicker.listpickerId) {  

                        var eventData = event.detail || {};  
                        var preItem = eventData.item || {};  
                        nextPicker.setItems(preItem.children);  
                        if(self.waitToSetValues&&self.waitToSetValues.length > 0){  
                            nextPicker.setSelectedValue(self.waitToSetValues.shift());  
                        }  
                    }  
                }, false);  
            }  
        },
  • 野原新之助 (作者)

    是可以的,这个要让官方加上啊

    2015-11-11 16:49

  • 野原新之助 (作者)

    @66994

    2015-11-11 16:59

  • S_eVent

    该方法有效,建议官方加上

    2016-06-11 21:34

  • hwb

    这两个方法加到mui.poppicker.js后,怎么用?

    2016-08-24 23:54

  • 希汝君兮

    在页面中怎么用呀?

    2017-05-04 12:49

Efog

Efog

请问arr数组是那此数据构成?

qmit

qmit

请问这个设置默认值这么使用啊?

小曾

小曾

picker.pickers[0].setSelectedIndex(4);
3***@qq.com

3***@qq.com

貌似现在可以通过下面的方式设置默认值

// 设定省初始值  
                cityPicker.pickers[0].setSelectedValue(100000, 0, function() {  
                    // 设定市初始值  
                    cityPicker.pickers[1].setSelectedValue(101000, 0, function() {  
                        // 设定区初始值  
                        cityPicker.pickers[2].setSelectedValue(101001);  
                    });  
                });

而不是

cityPicker.pickers[0].setSelectedValue(100000);  
cityPicker.pickers[1].setSelectedValue(101000);  
cityPicker.pickers[2].setSelectedValue(101001);

该问题目前已经被锁定, 无法添加新回复