首页 > 代码库 > 移动端iscroll实现日期选择

移动端iscroll实现日期选择

哎,说多了都是泪;

引入相关JS文件

 <script type="text/javascript" src="http://www.mamicode.com/js/jquery-1.9.1.min.js"></script>
 <script type="text/javascript" src="http://www.mamicode.com/js/iscroll.js"></script>

样式

 /*日期选择*/
    .date{
        position: fixed;
        top: 0;
        width: 100%;
        height: 100%;
        display: none;
        background-color:rgba(0,0,0,.3);
    }
    .date .date-piker{
        width:750px;
        background-color:#fff;
        font-size:26px;
        position:absolute;
        bottom:0
    }
    .date .date-piker .tit{
        height:80px;
        line-height:80px;
        background-color:#f4f4f4;
        color:#474747;
        padding:0 26px;
        text-align:center
    }
    .date .date-piker .tit a{
        color:#ff6315;
        float:left
    }
    .date .date-piker .tit a:last-child{
        float:right
    }
    .date .time-box{
        height: 420px;
        overflow: hidden;
        position: relative;
        width: 100%;
        padding:0 45px
    }
    .date .time-choose{
        height: 70px;
        border-top:1px solid #efefef;
        border-bottom:1px solid #efefef;
        position: absolute;
        top: 140px;
        left:-90px;
        width: 100%;
        background-color:#fff
    }
    .date .time-01, .time-02, .time-03{
        position:absolute;
        z-index: 3;
        height:420px;
        overflow:hidden
    }
    .date .time-02{
        left:240px
    }
    .date .time-03{
        left:480px
    }
    .date .time-box li{
        height:70px;
        line-height:70px;
        color:#474747;
        text-align: center;
        font-family:Helvetica;
        width: 220px
    }

HTML代码实现

  <div class="date">
        <div class="date-piker">
            <div class="tit"><a id="kidding">取消</a><span>保养时间</span><a id="sure">确定</a></div>
            <div class="time-box">
                <div class="time-choose"></div>
                <div class="time-01" id="month">
                    <div>
                        <ul>
                            <li></li>
                            <li></li>
                     
                            <li>4月</li>
                            <li>5月</li>
                            <li>6月</li>
                            <li>7月</li>
                     
                            <li></li>
                            <li></li>
                            <li></li>
                        </ul>
                    </div>
                </div>
                <div class="time-02" id="date">
                    <div>
                        <ul>
                            <li></li>
                            <li></li>
<li>1日</li> <li>2日</li> <li>3日</li> <li>4日</li> <li>5日</li> <li></li> <li></li> </ul> </div> </div> <div class="time-03" id="time"> <div> <ul> <li></li> <li></li> <li>10:00</li> <li>15:00</li> <li>16:00</li> <li>17:00</li> <li>18:00</li> <li></li> <li></li> <li></li> </ul> </div> </div> </div> </div> </div>

JS效果添加

 /*日期选择*/
    /*此处存在问题  这个时间上 关于月份 每个天数都不一样 需要动态生成*/
    $(‘.date_sure‘).click(function(){
        $(‘.date‘).show();
        //滚动效果
        scrolling();

        //确认结果
        $(‘#sure‘).click(function(){
            if(getContent("#month")){
               //获取各个div中ul li中选中的内容
                $(‘.date_sure‘).html(getContent("#month") +getContent("#date")+‘ ‘+ getContent("#time"));
                $(‘.date‘).hide();
            }
        });
        $(‘#kidding‘).click(function(){
            $(‘.date‘).hide();
        });
        var myScroll;

        function scrolling(){
            myScroll = new IScroll(‘#date‘, {
                scrollY: true,
                momentum: false,
                snap: ‘li‘
            });
            myScroll = new IScroll(‘#time‘, {
                scrollY: true,
                momentum: false,
                snap: ‘li‘
            });
            myScroll = new IScroll(‘#month‘, {
                scrollY: true,
                momentum: false,
                snap: ‘li‘
            });

        }

        function getContent(ele){
            //找到里层div
            var $content = $(ele).find(‘div‘);
            //获取一个li的高度
            var _height=$(ele).find(‘li‘).height();
            //为内层div添加transform移动效果
            var tran = $content.css(‘transform‘);
            var topArray=[];
            //将获取到的内容 变成数组  最后一个为移动距离top
            topArray=tran.split(‘,‘);
            var top=Math.floor(parseFloat(topArray[5]));
            //获取到移动的个数 减去空的两个li 
            var num=top/_height-2;
            //返回对应选择出来的li的内容
            return $(ele+" li").eq(-num).text();
        }
    });                

完成了 这个日期的选择  

移动端iscroll实现日期选择