• 酒店移动端入住离店日期选择demo(转)


    原作者:http://blog.csdn.net/cj14227/article/details/65629737

    效果图:

    demo 代码:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="format-detection" content="telephone=no">
        <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width">
        <script src="http://www.jq22.com/jquery/jquery-1.10.2.js"></script>
    
        <!--<script src="RangeTime/jQueryTime/js/jquery.min.js"></script>-->
        <title>Document</title>
        <style>
            *{
                padding: 0;
                margin: 0;
            }
            input{
                border:none;
                width: 200px;
            }
            #RangeDate{
                display: flex;
                flex-wrap: wrap;
                text-align: center;
                font-size: 14px;
                line-height: 50px;
                color: #333;
                position: fixed;
                bottom: 0;
                left: 0;
                width: 100%;
                overflow: hidden;
            }
            .RangeDate_xinqi{
                width: 14%;
                height: 40px;
                line-height: 40px;
                color: #666;
            }
            .RangeDate_title{
                height: 36px;
                line-height: 36px;
                font-size: 14px;
                color: #333;
                background: #fafafa;
                width: 100%;
                border-bottom: 1px solid #eee;
                border-top: 1px solid #eee;
            }
            .RangeDate_day{
                height: 48px;
                width: 14%;
                position: relative;
                margin:1px 0;
            }
            .RangeDate_day:before{
                content: '';
                display: none;
                position: absolute;
                color: #fff;
                width: 0;
                height: 0;
                top: -6px;
                left: 30px;
                border-left: 3px solid transparent;
                border-right: 3px solid transparent;
                border-top: 6px solid rgba(0,0,0,0.7);
            }
            .RangeDate_promptSmall{
                position: absolute;
                top: -26px;
                left: 5%;
                background: rgba(0,0,0,0.7);
                border-radius: 2px;
                color: #FFF;
                padding: 0 6px;
                line-height: 20px;
                font-size: 12px;
                white-space: nowrap;
            }
            .RangeDate_promptBig{
                position: absolute;
                top: -26px;
                left: -40%;
                background: rgba(0,0,0,0.7);
                border-radius: 2px;
                color: #FFF;
                padding: 0 6px;
                line-height: 20px;
                font-size: 12px;
                white-space: nowrap;
            }
            .RangeDate_promptBigLeft{
                position: absolute;
                top: -26px;
                left: 0;
                background: rgba(0,0,0,0.7);
                border-radius: 2px;
                color: #FFF;
                padding: 0 6px;
                line-height: 20px;
                font-size: 12px;
                white-space: nowrap;
            }
            .RangeDate_promptBigRight{
                position: absolute;
                top: -26px;
                right: 0;
                background: rgba(0,0,0,0.7);
                border-radius: 2px;
                color: #FFF;
                padding: 0 6px;
                line-height: 20px;
                font-size: 12px;
                white-space: nowrap;
            }
            .RangeDate_dayShow:before{
                display: block;
            }
            .RangeDate_dayStart:after{
                content: '入住';
                display: block;
            }
            .RangeDate_dayEnd:after{
                content: '离店';
                display: block;
            }
            .RangeDate_dayStart{
                line-height: 24px;
                background: #2db6a6;
                border-top-left-radius: 4px;
                border-bottom-left-radius: 4px;
                color: #fff;
            }
            .RangeDate_dayCenter{
                background: #dff3f1;
            }
            .RangeDate_dayEnd{
                line-height: 24px;
                background: #2db6a6;
                border-top-right-radius: 4px;
                border-bottom-right-radius: 4px;
                color: #fff;
            }
            .RangeDate_A1{
                color: #a1a1a1;
            }
            .RangeDate_dayNo{
                color:#a2a2a2;
            }
            .RangeDate_week{
                color: #f9957b;
            }
            .RangeDate_head{
                width: 100%;
                box-sizing: border-box;
                text-align: left;
                color: #666;
                font-size: 16px;
                padding-left: 20px;
                border-bottom: 1px solid #eee;
            }
            .RangeDate_done{
                color: #27b4a4;
                float: right;
                height: 30px;
                line-height: 30px;
                border-radius: 4px;
                border: 1px solid #27b4a4;
                margin: 10px 20px;
                padding:0 10px;
            }
            #RangeDate_container{
                display: flex;
                align-items: center;
                width: 100%;
                height:300px;
                overflow-y: scroll;
                overflow-x: hidden;
                flex-wrap: wrap;
            }
            .RangeDate_none{
                display: none !important;
            }
        </style>
    </head>
    <body>
        <!--<div id="RangeDate" class="RangeDate_none">-->
            <!--<div class="RangeDate_head">-->
                <!--请选择入离日期-->
                <!--<div class="RangeDate_done">-->
                    <!--完成-->
                <!--</div>-->
            <!--</div>-->
            <!--<div class="RangeDate_xinqi RangeDate_week">日</div>-->
            <!--<div class="RangeDate_xinqi">一</div>-->
            <!--<div class="RangeDate_xinqi">二</div>-->
            <!--<div class="RangeDate_xinqi">三</div>-->
            <!--<div class="RangeDate_xinqi">四</div>-->
            <!--<div class="RangeDate_xinqi">五</div>-->
            <!--<div class="RangeDate_xinqi RangeDate_week">六</div>-->
            <!--<div id="container"></div>-->
        <!--</div>-->
        <div>
            <input type="text" readonly id="test" value="点我试试看">
        </div>
    </body>
    <script>
        window.RangeDate=function(RangeDateID){
            $('body').append(
                '<div id="RangeDate" class="RangeDate_none">'+
                    '<div class="RangeDate_head">'+
                        '请选择入离日期'+
                        '<div class="RangeDate_done">'+
                           '完成'+
                        '</div>'+
                    '</div>'+
                    '<div class="RangeDate_xinqi RangeDate_week">日</div>'+
                    '<div class="RangeDate_xinqi">一</div>'+
                    '<div class="RangeDate_xinqi">二</div>'+
                    '<div class="RangeDate_xinqi">三</div>'+
                    '<div class="RangeDate_xinqi">四</div>'+
                    '<div class="RangeDate_xinqi">五</div>'+
                    '<div class="RangeDate_xinqi RangeDate_week">六</div>'+
                    '<div id="RangeDate_container"></div>'+
                '</div>'
            )
    
    
    
            var today=new Date();
            var fu=document.querySelector('#RangeDate_container');
            var startWeek=new Date(today.getFullYear(),today.getMonth(),1). getDay();
            var dayNum=32-(new Date(today.getFullYear(),today.getMonth(),32).getDate());
            var monthNum= 0,flag= 1,RangeDate_start=true,RangeDate_end=true,RangeDate_startId='',RangeDate_endId='',RangeDate_center=[];
            var prompt=document.createElement('div');
            $(prompt).addClass('RangeDate_prompt')
    
            function getDay(attr){
                var monthTitle=document.createElement('div');
                $(monthTitle).addClass('RangeDate_title');
                monthTitle.innerHTML=new Date(today.getFullYear(),today.getMonth()+monthNum,1).getFullYear()+''+(new Date(today.getFullYear(),today.getMonth()+monthNum,1).getMonth()+1)+'';
                fu.appendChild(monthTitle);
                var firstDay=document.createElement('div');
                $(firstDay).addClass('RangeDate_day');
                $(firstDay).attr('id','RangeDate_'+flag);
                $(firstDay).attr('data-id',attr+'1');
                flag++;
                firstDay.style.marginLeft=startWeek*14+"%";
                firstDay.style.width='14%';
                firstDay.innerHTML='1';
                firstDay.onclick=function(){
                    RangeDateClick(this);
                }
                fu.appendChild(firstDay);
                for(var i=2;i<=dayNum;i++){
                    var j=document.createElement('div');
                    $(j).addClass('RangeDate_day');
                    $(j).attr('id','RangeDate_'+flag);
                    flag++;
                    j.innerHTML=i+'';
                    $(j).attr('data-id',attr+i);
                    j.onclick=function(){
                        RangeDateClick(this);
                    }
                    fu.appendChild(j)
                }
                monthNum++;
                startWeek=new Date(today.getFullYear(),today.getMonth()+monthNum,1).getDay();
                dayNum=32-(new Date(today.getFullYear(),today.getMonth()+monthNum,32).getDate());
            }
    
            function RangeDateClick(ele){
                console.log($('#RangeDate_container').width()-$(ele).offset().left-$(ele).width())
                if(RangeDate_start){
                    $(ele).addClass('RangeDate_dayStart');
                    $(ele).addClass('RangeDate_dayShow');
                    RangeDate_start=false;
                    RangeDate_startId=$(ele).attr('id');
                    $(prompt).removeClass();
                    if($(ele).offset().left<=10){
                        $(prompt).addClass('RangeDate_promptBigLeft')
                    }else if($('#RangeDate_container').width()-$(ele).offset().left-$(ele).width()<=10){
                        $(prompt).addClass('RangeDate_promptBigRight')
                    }else {
                        $(prompt).addClass('RangeDate_promptBig')
                    }
                    $(ele)[0].appendChild(prompt);
                    prompt.innerHTML='请选择离店时间';
                    return;
                }
                if(RangeDate_end){
                    if($(ele).attr('id').split('_')[1]*1>$('#'+RangeDate_startId).attr('id').split('_')[1]*1){
                        $(prompt).removeClass();
                        $('#'+RangeDate_startId).removeClass('RangeDate_dayShow');
                        $(ele).addClass('RangeDate_dayEnd');
                        RangeDate_end=false;
                        RangeDate_endId=$(ele).attr('id');
                        $('#'+RangeDate_endId).addClass('RangeDate_dayShow');
                        $(prompt).addClass('RangeDate_promptSmall');
                        $('#'+RangeDate_endId)[0].appendChild(prompt);
                        prompt.innerHTML=''+(RangeDate_endId.split('_')[1]-RangeDate_startId.split('_')[1])+'';
                    }else if($(ele).attr('id').split('_')[1]<$('#'+RangeDate_startId).attr('id').split('_')[1]){
                        $(prompt).removeClass();
                        $('#'+RangeDate_startId).removeClass('RangeDate_dayShow');
                        $('#'+RangeDate_startId).removeClass('RangeDate_dayStart');
                        $('#'+RangeDate_startId).addClass('RangeDate_dayEnd');
                        RangeDate_endId=$('#'+RangeDate_startId).attr('id');
                        $(ele).addClass('RangeDate_dayStart');
                        RangeDate_startId=$(ele).attr('id');
                        $('#'+RangeDate_endId).addClass('RangeDate_dayShow');
                        $(prompt).addClass('RangeDate_promptSmall');
                        $('#'+RangeDate_endId)[0].appendChild(prompt);
                        prompt.innerHTML=''+(RangeDate_endId.split('_')[1]-RangeDate_startId.split('_')[1])+'';
                        RangeDate_end=false;
                    }else {
                        return;
                    }
                    if(RangeDate_center.length>0){
                        for(var i=0;i<RangeDate_center.length;i++){
                            $('#RangeDate_'+RangeDate_center[i]).removeClass('RangeDate_dayCenter');
                        }
                        RangeDate_center=[];
                    }
                    for(var i=RangeDate_startId.split('_')[1]*1+1;i<RangeDate_endId.split('_')[1]*1;i++){
                        $('#RangeDate_'+i).addClass('RangeDate_dayCenter');
                        RangeDate_center.push(i)
                    }
                    return;
                }
                if(!RangeDate_start && !RangeDate_end){
                    $('#'+RangeDate_startId).removeClass('RangeDate_dayStart');
                    $('#'+RangeDate_endId).removeClass('RangeDate_dayEnd');
                    $('#'+RangeDate_endId).removeClass('RangeDate_dayShow');
                    $('#'+RangeDate_endId)[0].removeChild(prompt);
                    $(ele).addClass('RangeDate_dayStart');
                    $(ele).addClass('RangeDate_dayShow');
                    $(prompt).removeClass();
                    if($(ele).offset().left<=10){
                        $(prompt).addClass('RangeDate_promptBigLeft')
                    }else if($('#RangeDate_container').width()-$(ele).offset().left-$(ele).width()<=10){
                        $(prompt).addClass('RangeDate_promptBigRight')
                    }else {
                        $(prompt).addClass('RangeDate_promptBig')
                    }
                    $(ele)[0].appendChild(prompt);
                    prompt.innerHTML='请选择离店时间';
                    RangeDate_startId=$(ele).attr('id');
                    RangeDate_end=true;
                    if(RangeDate_center.length>0){
                        for(var i=0;i<RangeDate_center.length;i++){
                            $('#RangeDate_'+RangeDate_center[i]).removeClass('RangeDate_dayCenter');
                        }
                        RangeDate_center=[];
                    }
                }
            }
            getDay(new Date(today.getFullYear(),today.getMonth()+1,1).getFullYear()+'-'+new Date(today.getFullYear(),today.getMonth()+1,1).getMonth()+'-');
            getDay(new Date(today.getFullYear(),today.getMonth()+2,1).getFullYear()+'-'+new Date(today.getFullYear(),today.getMonth()+2,1).getMonth()+'-');
            getDay(new Date(today.getFullYear(),today.getMonth()+3,1).getFullYear()+'-'+new Date(today.getFullYear(),today.getMonth()+3,1).getMonth()+'-');
            getDay(new Date(today.getFullYear(),today.getMonth()+4,1).getFullYear()+'-'+new Date(today.getFullYear(),today.getMonth()+4,1).getMonth()+'-');
    
            $('#RangeDate_'+new Date().getDate()).html('今天');
            RangeDateClick($('#RangeDate_'+new Date().getDate()));
            RangeDateClick($('#RangeDate_'+($('#RangeDate_'+new Date().getDate()).attr('id').split('_')[1]*1+1)));
    
            for(var i=new Date().getDate()-1;i>0;i--){
                $('#RangeDate_'+i).addClass('RangeDate_dayNo');
                $('#RangeDate_'+i)[0].onclick=null;
            }
            $('#'+RangeDateID).bind('click',function(){
                $('#RangeDate').toggleClass('RangeDate_none');
            });
            $('.RangeDate_done').bind('click',function(){
                console.log(RangeDate_start)
                console.log(RangeDate_end)
                if(!RangeDate_start && !RangeDate_end){
                    $('#RangeDate').addClass('RangeDate_none');
                    $('#'+RangeDateID).val($('#'+RangeDate_startId).attr('data-id')+''+$('#'+RangeDate_endId).attr('data-id')+''+(RangeDate_endId.split('_')[1]*1-RangeDate_startId.split('_')[1]*1)+'')
                }
            })
        }
        RangeDate('test')
    </script>
    </html>
  • 相关阅读:
    JSP文件上传下载组件(2)
    JSP文件上传下载组件(1)
    FetchProfile类的作用
    html(二) -- 文本标签和实体字符
    html (一)-- 概述
    单元测试框架--junit
    内省和BeanUtils
    工厂模式
    反射
    观察者设计模式
  • 原文地址:https://www.cnblogs.com/ryans/p/7083967.html
Copyright © 2020-2023  润新知