Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » jQuery » Как заменить ввод данных в data-datte?

Как заменить ввод данных в data-datte?


     28.09.2020    Все вопросы » jQuery    878

вопрос
Всем привет. Подскажите как сделать, чтобы ввод данных в таймере работал в следующем виде через точку и в таком порядке data-datte="15.12.2020" (день.месяц.год), а на данный момент работает только если ввести вот так data-datte="2020-12-15" (год-месяц-день) и только через тире.

Вывод самого таймера:
<div class='countdown' data-datte="2020-12-15" data-time="10:00"></div>


Код таймера:
(function ( $ ) {
    function pad(n) {
        return (n < 10) ? ("0" + n) : n;
    }

    $.fn.showclock = function() {
     
        var currentDate=new Date();
        var fieldDate=$(this).data('datte').split('-');
        var fieldTime=[0,0];
        if($(this).data('time')!=undefined)
        fieldTime=$(this).data('time').split(':');
        var futureDate=new Date(fieldDate[0],fieldDate[1]-1,fieldDate[2],fieldTime[0],fieldTime[1]);
        var seconds=futureDate.getTime() / 1000 - currentDate.getTime() / 1000;

        if(seconds<=0 || isNaN(seconds)){
            this.html("<div style='text-align:center; color: #a5a2a2; font-size: 15px; font-family: sans-serif;'>время вышло,<br>приятного просмотра</div>");
            return this;
        }
        
        if(seconds<=0 || isNaN(seconds)){
            this.hide();
            return this;
        }

        var days=Math.floor(seconds/86400);
        seconds=seconds%86400;
     
        var hours=Math.floor(seconds/3600);
        seconds=seconds%3600;

        var minutes=Math.floor(seconds/60);
        seconds=Math.floor(seconds%60);
     
        var html="";
        
        if(days!=0){
            html+="<div style='text-align: center; padding: 0 10px 0 0;' class='countdown-container days'>"
                html+="<span style='color: #47CB65; font-size: 18px; font-family: sans-serif;' class='countdown-value days-bottom'>"+pad(days)+"</span>";
                html+="<span class='countdown-heading days-top'><br />дней</span>";
            html+="</div>";
        }

        html+="<div style='text-align: center; padding: 0 10px 0 8px;' class='countdown-container hours'>"
            html+="<span style='color: #47CB65; font-size: 18px; font-family: sans-serif;' class='countdown-value hours-bottom'>"+pad(hours)+"</span>";
            html+="<span class='countdown-heading hours-top'><br />часов</span>";
        html+="</div>";

        html+="<div style='text-align: center; padding: 0 8px 0 8px;' class='countdown-container minutes'>"
            html+="<span style='color: #47CB65; font-size: 18px; font-family: sans-serif;' class='countdown-value minutes-bottom'>"+pad(minutes)+"</span>";
            html+="<span class='countdown-heading minutes-top'><br />минут</span>";
        html+="</div>";

        html+="<div style='text-align: center; padding: 0 0 0 8px;' class='countdown-container seconds'>"
            html+="<span style='color: #47CB65; font-size: 18px; font-family: sans-serif;' class='countdown-value seconds-bottom'>"+pad(seconds)+"</span>";
            html+="<span class='countdown-heading seconds-top'><br />секунд</span>";
        html+="</div>";

        this.html(html);
    };

    $.fn.countdown = function() {
        var el=$(this);
        el.showclock();
        setInterval(function(){
            el.showclock(); 
        },1000);
     
    }

}(jQuery));

jQuery(document).ready(function(){
    if(jQuery(".countdown").length>0){
        jQuery(".countdown").each(function(){
            jQuery(this).countdown(); 
        })
     
    }
})

Ответил: MrAstute


var fieldDate=$(this).data('datte').split('-');

заменить на
var fieldDate=$(this).data('datte').split('.');



var futureDate=new Date(fieldDate[0],fieldDate[1]-1,fieldDate[2],fieldTime[0],fieldTime[1]);

заменить на
var futureDate=new Date(fieldDate[2],fieldDate[1]-1,fieldDate[0],fieldTime[0],fieldTime[1]);

5 комментариев

akella
Юзер

akella - 29 сентября 2020 12:05 -

var fieldDate=$(this).data('datte').split('-');
заменить на
var fieldDate=$(this).data('datte').split('.');


var futureDate=new Date(fieldDate[0],fieldDate[1]-1,fieldDate[2],fieldTime[0],fieldTime[1]);
заменить на
var futureDate=new Date(fieldDate[2],fieldDate[1]-1,fieldDate[0],fieldTime[0],fieldTime[1]);

MrAstute
Юзер

MrAstute - 29 сентября 2020 18:17 -

akella, Спасибо работает. Только приходиться создавать 3 доп. поля. Поскольку если вставлять дату в 1 доп поле выводиться после доп поля ".." две точки и таймер наработает. Почему так происходит? Подскажи пожалуйста или может кто знает как это исправить?

Вот так выводится:
<div class='countdown' data-datte="15.09.2020.." data-time="10:00"></div>


тобишь после даты почему-то добавляется автоматом две точки.

Вот пример

MrAstute
Юзер

MrAstute - 29 сентября 2020 18:26 -

Ступил. Всё нормально работает. Спасибо akella, помогло.

akella
Юзер

akella - 29 сентября 2020 19:23 -

этот кусок можно удалить

        if(seconds<=0 || isNaN(seconds)){
            this.hide();
            return this;
        }

MrAstute
Юзер

MrAstute - 29 сентября 2020 19:34 -

akella, удалил =)

Спасибо за помощь.

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх