WeUI移動頁面實現時間選擇器(年-月-日-時-分)


在做微信公眾號的時候,使用的WeUI樣式,有一個需求是用戶選擇一個預約時間,需要年月日並精確到小時和分鍾

但是WeUI的picker組件不支持直接顯示5列,根據WeUI.js作者的建議,是將日期和時間選擇作為兩個選擇器來實現。

所以我的實現思路是先選擇日期,然后自動跳出時間選擇,來模仿一個時間選擇器。日期屬於datepicker,時間屬於普通的picker。

效果圖:

點擊期望時間跳出datepicker:

在選擇時間並確定后跳出時間選擇,這是一個普通picker:

之后就可以對選擇的時間做處理了。

實現方法也很簡單:在第一picker選擇並消失后,調用第二個picker,這樣可以保證連續調用。

關鍵在於監聽第一個picker消失的事件,第一個消失后才能調用第二個。

代碼:

    $('.ma_expect_date').click(function(event) {
        var _this = this;
        weui.datePicker({
            start: new Date(),
            end: 2030,
            defaultValue: [new Date().getFullYear(), new Date().getMonth()+1, new Date().getDate()],
            onConfirm: function(result){
                // 二級調用:時間
                $('.ma_expect_date_picker .weui-picker').on('animationend webkitAnimationEnd', function() {
                    show_expect_time_picker(_this, result);
                });
            },
            id: 'ma_expect_date',
            className: 'ma_expect_date_picker'
        });
    });
    // -----------------------二級調用:時間
    var hours = [],
        minites = [],
        symbol = [{ label: ':', value: 0 }];
    function show_expect_time_picker(_this, date) {
        var date = date[0].label + date[1].label + date[2].label;
        if (!hours.length) {
            for (var i = 0; i< 24; i++) {
                var hours_item = {};
                hours_item.label = ('' + i).length === 1 ? '0' + i : '' + i;
                hours_item.value = i;
                hours.push(hours_item);
            }
        }
        if (!minites.length) {
            for (var j= 0; j < 60; j++) {
                var minites_item = {};
                minites_item.label = ('' + j).length === 1 ? '0' + j : '' + j;
                minites_item.value = j;
                minites.push(minites_item);
            }
        }

        weui.picker(hours, symbol, minites, {
            defaultValue: [new Date().getHours()+1, 0, 0],
            onConfirm: function(result) {
                var time = result[0].label + ':' + result[2].label;
                var expect_date = date + ' ' + time;
                $(_this).find('.weui-cell__ft').text(expect_date);
            },
            id: 'ma_expect_time'
        });
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM