【问题标题】:Countdown Timer with Input Field带输入字段的倒数计时器
【发布时间】:2016-08-30 22:06:15
【问题描述】:

我确定有人已经发现了这一点,但我似乎无法找到它。

我所拥有的是一个非常基本的倒计时,用户在输入字段中输入分钟数,点击按钮,它就会倒计时。

我想知道的是 只是倒计时 以在页面刷新时忽略 (按原样继续)。此刻,它只是停止倒计时。

这是我目前所拥有的。

HTML:

<form>
<input id="tminus" placeholder="0:00"></input>
<input id="request" placeholder="Enter Minutes here"></input>
<a href="#" class="button enterTime">Submit Time</a>
 <input type="reset" value="Clear form" />
</form>

JS:

$('.enterTime').click(function () {
    var reqVal = $('#request').val();
    var parAmt = parseInt(reqVal);
    var totalAmount = parAmt * 60;
     $('#request').val(" ");

    var timeloop, timeSet = function () {

        totalAmount--;

        var minutes = parseInt(totalAmount/60);
        var seconds = parseInt(totalAmount%60);

        if(seconds < 10)
            seconds = "0"+seconds;
        $('#tminus').val(minutes + ":" + seconds);
    };

    var timeloop  = setInterval(timeSet, 1000);

})

感谢大家的帮助。

【问题讨论】:

  • 因为您正在倒计时。保存本地存储中剩余的秒数或每次滴答时的 cookie。然后$(document).ready,看看它是否设置,如果是,从剩下的几秒开始计时。

标签: jquery html refresh countdown jquery-countdown


【解决方案1】:

您可以将totalAmount 保存到localStorage 并在用户刷新页面时从那里获取价值。这里有你需要的:

Fiddle

// Get totalAmount from localStorage and if there is positive value call timeSet() immediately
var totalAmount = localStorage.getItem('countDown') || 0,
    timeloop;

if (totalAmount) {
    timeSet()
}

function timeSet () {
    totalAmount--;
    // Refresh value in localStorage
    localStorage.setItem('countDown', totalAmount);

     // If countdown is over, then remove value from storage and clear timeout
     if (totalAmount < 0 ) {
         localStorage.removeItem('countDown');
         totalAmount = 0;
         clearTimeout(timeloop);
         return;
     }

    var minutes = parseInt(totalAmount/60);
    var seconds = parseInt(totalAmount%60);

    if(seconds < 10)
        seconds = "0"+seconds;

    $('#tminus').val(minutes + ":" + seconds);

    timeloop = setTimeout(timeSet, 1000);
}

$('.enterTime').click(function () {
    var reqVal = $('#request').val();
    var parAmt = parseInt(reqVal);

    if (timeloop) {
        clearTimeout(timeloop)
    }

    totalAmount = parAmt * 60;

    $('#request').val(" ");

    timeSet();
})

// Clear timeout and remove localStorage value when resetting form
$('#countdown').on('reset', function () {
    totalAmount = 0;
    clearTimeout(timeloop);
    localStorage.removeItem('countDown');
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form id="countdown">
    <input id="tminus" placeholder="0:00" />
    <input id="request" placeholder="Enter Minutes here" />
    <a href="#" class="button enterTime">Submit Time</a>
    <input type="reset" value="Clear form" />
</form>

【讨论】:

  • 非常感谢您花时间回答并提供解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-10-13
  • 1970-01-01
  • 1970-01-01
  • 2013-09-12
  • 2021-03-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多