开始使用 API对象 布局容器和栅格系统 Color 色彩 Button 按钮 Tag 标签 Badge 数字角标 List 列表 Grid 宫格 Card 卡片 Noticebar 通告 Steps 步骤条 Icon 图标 Srarch 搜索 侧滑菜单 图片上传 图片预览 图片裁剪 图片主色 星级评价 选择器 下拉选择 选项卡 生成二维码 复制剪贴板 物流信息 加入购物车 波浪特效 水球图 倒计时 雪花飘落 loading动画 toast消息提示弹窗 dialog提示窗 actionsheet操作表 actionmenu分享弹窗 popover菜单 picker多级联动 poster广告弹窗 keypad数字键盘 chatbox js聊天输入框

选择器

作者提供了单列选择和时间选择两种演示示例。示例和功能借助MUI picker 组件实现。需要先引入相关的CSS和JS文件:

<link rel="stylesheet" type="text/css" href="mui/mui.min.css"/>

<link rel="stylesheet" type="text/css" href="mui/mui.picker.min.css"/>

<link rel="stylesheet" type="text/css" href="mui/mui.reset.min.css"/>

<script src="lib/mui/mui.min.js" type="text/javascript" charset="utf-8"></script>

<script src="lib/mui/mui.picker.min.js" type="text/javascript" charset="utf-8"></script>

<script src="lib/mui/mui.poppicker.js" type="text/javascript" charset="utf-8"></script>

示例代码

<div class="aui-content">
  <ul>
    <li class="list">
      <p>所在地区</p>
      <span class="choose-btn" id="choose-address" style="color: #333">请选择</span>
      <i class="mui-icon mui-icon-arrowright"></i>
    </li>
    <li class="list">
      <p>当前日期</p>
      <span class="choose-btn" id="date-picker" data-options='{"type":"date"}' style="color: #333">请选择</span>
      <i class="mui-icon mui-icon-arrowright"></i>
    </li>
  </ul>
</div>
<script>
  //选择器
  var initPicker = function(){
    var _this = this;
    (function($, doc) {
        $.init();
        $.ready(function() {
            /**
             * 获取对象属性的值
             * 主要用于过滤三级联动中,可能出现的最低级的数据不存在的情况,实际开发中需要注意这一点;
             * @param {Object} obj 对象
             * @param {String} param 属性名
             */
            var _getParam = function(obj, param) {
                return obj[param] || '';
            };
            //选择地址
            var cityPicker = new $.PopPicker({
                layer: 1
            });
            var cityData = _this.cityList || [];
            cityPicker.setData(cityData);
            var showCityPickerButton = doc.getElementById('choose-address');
            showCityPickerButton.addEventListener('click', function(event) {
                cityPicker.show(function(items) {
                    _this.city =  items[0].text;
                    _this.city_id = items[0].value;
                    //返回 false 可以阻止选择框的关闭
                    //return false;
                });
            }, false);

            var btn = document.querySelector('#date-picker');
            btn.addEventListener('tap', function() {
                var _self = this;
                if(_self.picker) {
                    _self.picker.show(function (rs) {
                        // result.innerText = '选择结果: ' + rs.text;
                        console.log("1:"+rs.text);
                        _this.date = rs.y.value+'-'+rs.m.value+'-'+rs.d.value;
                        _self.picker.dispose();
                        _self.picker = null;
                    });
                } else {
                    var optionsJson = this.getAttribute('data-options') || '{}';
                    var options = JSON.parse(optionsJson);
                    var id = this.getAttribute('id');
                    /*
                     * 首次显示时实例化组件
                     * 示例为了简洁,将 options 放在了按钮的 dom 上
                     * 也可以直接通过代码声明 optinos 用于实例化 DtPicker
                     */
                    _self.picker = new $.DtPicker(options);
                    _self.picker.show(function(rs) {
                        /*
                         * rs.value 拼合后的 value
                         * rs.text 拼合后的 text
                         * rs.y 年,可以通过 rs.y.vaue 和 rs.y.text 获取值和文本
                         * rs.m 月,用法同年
                         * rs.d 日,用法同年
                         * rs.h 时,用法同年
                         * rs.i 分(minutes 的第二个字母),用法同年
                         */
                        // result.innerText = '选择结果: ' + rs.text;
                        // console.log("2:"+rs.text);
                        var timer = setTimeout(function(){
                            clearTimeout(timer);
                            _this.date = rs.y.value+'-'+rs.m.value+'-'+rs.d.value;
                        },300);
                        /*
                         * 返回 false 可以阻止选择框的关闭
                         * return false;
                         */
                        /*
                         * 释放组件资源,释放后将将不能再操作组件
                         * 通常情况下,不需要示放组件,new DtPicker(options) 后,可以一直使用。
                         * 当前示例,因为内容较多,如不进行资原释放,在某些设备上会较慢。
                         * 所以每次用完便立即调用 dispose 进行释放,下次用时再创建新实例。
                         */
                        _self.picker.dispose();
                        _self.picker = null;
                    });
                }
            }, false);

        });
    })(mui, document);
    }
</script>