Вам необходимо использовать браузер localStorage для хранения секунд.
После того, как вы нажмете кнопку оформления заказа, мы будем setItem
время как seconds
- В setIterval
мы будет обновлять время, оставшееся на кнопке, и как только время достигнет предела конца, мы удалим, используя removeItem
, localStorage
из browser
.
Если пользователь обновит страница оформления заказа (здесь появляется ваш вопрос) - Мы нажимаем кнопку оформления заказа, и мы проверим, осталось ли время в localStorage
для нашего ключа, который мы установили ранее.
Если осталось нет оставшееся время, мы будем использовать запуск часов с 1 minutes and 15 seconds
ИЛИ иначе мы будем start
в оставшееся время, используя getItem
в localStorage
.
Я протестировал этот код, и он отлично работает.
Демо: (Вам нужно попробовать это в своем собственном браузере - localStorage
не поддерживается в этом фрагменте.)
$.fn.disableFor = function(mins, secs) {
var i = [],
play = [];
this.click(function() {
var selector = $(this),
inDex = $(selector).index(),
prevText = $(selector).text();
i[inDex] = 0;
//Store seconds
var inSeconds = mins * 60 + secs;
//Get the previous stored seconds - check local storage
var retrievedObject = localStorage.getItem('time');
if (retrievedObject) {
inSeconds = retrievedObject
}
//Disable button
$(selector).prop("disabled", "disabled");
play[inDex] = setInterval(function() {
if (inSeconds > 60) {
localStorage.setItem('time', inSeconds); //Set time again
inSeconds = inSeconds - 1;
var minutes = Math.floor(inSeconds / 60);
var seconds = inSeconds % 60;
if (minutes >= 1) {
if (seconds.toString().length > 1) {
$(selector).text(minutes + ":" + seconds + " minutes left");
} else {
$(selector).text(minutes + ":" + "0" + seconds + " minutes left");
}
} else {
$(selector).text(seconds + " seconds left");
}
} else {
localStorage.setItem('time', inSeconds); //Set time again
if (inSeconds > 1) {
inSeconds = inSeconds - 1;
if (inSeconds.toString().length > 1) {
$(selector).text(inSeconds + " seconds left");
} else {
$(selector).text("0" + inSeconds + " seconds left");
}
} else {
localStorage.removeItem('time');
$(selector).prop("disabled", "");
clearInterval(play[inDex]);
$(selector).text(prevText);
}
}
}, 1000);
});
};
$(function() {
$("button").disableFor(1, 15); // First parameter stands for minutes and the second for the seconds.
});
div {
margin: 0 auto;
padding: 10px;
vertical-align: middle;
background-image: -moz-linear-gradient(bottom, white 0%, #CCC 100%);
background-image: -o-linear-gradient(bottom, white 0%, #CCC 100%);
background-image: -webkit-linear-gradient(bottom, white 0%, #CCC 100%);
background-image: -ms-linear-gradient(bottom, white 0%, #CCC 100%);
background-image: linear-gradient(bottom, white 0%, #CCC 100%);
}
button {
color: #2b2b2b;
text-shadow: 0 1px 0 #999;
font-size: 18px;
font-weight: bold;
text-transform: uppercase;
cursor: pointer;
margin: 0 5px;
border-radius: 12px;
-moz-box-shadow: 4px 4px 4px #CCC;
-o-box-shadow: 4px 4px 4px #CCC;
-ms-box-shadow: 4px 4px 4px #CCC;
-webkit-box-shadow: 4px 4px 4px #CCC;
box-shadow: 4px 4px 4px #CCC;
}
button:hover {
color: #3c3c3c;
background-image: -moz-linear-gradient(top, #CCC 0%, white 20%, #666 100%);
background-image: -o-linear-gradient(top, #CCC 0%, white 20%, #666 100%);
background-image: -ms-linear-gradient(top, #CCC 0%, white 20%, #666 100%);
background-image: -webkit-linear-gradient(top, #CCC 0%, white 20%, #666 100%);
background-image: linear-gradient(top, #CCC 0%, white 20%, #666 100%);
}
button:disabled {
color: #999;
cursor: default;
background: #CCC;
}
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
</head>
<body>
<div>
<button>checkout</button>
</div>
</body>