如何选择新日期时停止并重新启动setInterval
问题描述:
在这里,您可以选择一个日期,它会告诉您在该日期之前多久。但是,如果我选择一个新的日期事情得到越野车......一旦选择了新的日期值,我应该怎么做重新启动函数和setInterval?如何选择新日期时停止并重新启动setInterval
$(document).ready(function() {
var showOne = new Date();
var showTwo = new Date(2016, 10, 14);
$('#showOne').text(showOne);
$('#showTwo').text(showTwo);
function calcDate(newDater) {
var tickTock = setInterval(function() {
var currentDateSec = $.now()/1000;
var laterDate = newDater;
// console.log("Later Date: " + laterDate);
var laterDateSec = laterDate/1000;
var timeLeft = laterDateSec - currentDateSec;
var sLeft = Math.floor(timeLeft) % 60;
var mLeft = Math.floor(timeLeft/(60)) % 60;
var hLeft = Math.floor(timeLeft/(60 * 60)) % 24;
var dLeft = Math.floor(timeLeft/(60 * 60 * 24)) % 7;
var wLeft = Math.floor(timeLeft/(60 * 60 * 24 * 7)) % 4;
var moLeft = Math.floor(timeLeft/(60 * 60 * 24 * 7 * 4));
$('#humandate').text(moLeft + " Month(s) - " + wLeft + " Week(s) - " + dLeft + " Day(s) - " + hLeft + " Hour(s) - " + mLeft + " Mins - " + sLeft + " Sec\(s\)");
}, 1000);
}
$("#datepicker").datepicker({
onSelect: function(dateText, inst) {
var dateAsString = dateText; //the first parameter of this function
var dateAsObject = $(this).datepicker('getDate'); //the getDate method
var date = $("#datepicker").datepicker({
dateFormat: 'dd,MM,yyyy'
}).val();
console.log(dateAsString + " --- " + dateAsObject + " --- " + date);
calcDate(dateAsObject);
}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js "></script>
<p>Date:
<input type="text" id="datepicker">
</p>
<span id="humandate"></span>
<br/>
答
您可以通过执行其重置clearInterval(id)
,如:
...
var tickTock;
function calcDate(newDater) {
// if you have set it before, clear it.
if (tickTock) {
clearInterval(tickTock);
}
tickTock = setInterval(function() {
....
+0
我没有这样的运气,除非我仍然失去了一些东西 –
答
与排序是:
...
function calcDate(newDater) {
$("#datepicker").on('blur' , function(){ clearInterval(tickTock); });
var tickTock = setInterval(function() {
...
的可能的复制[重置的setInterval的定时器() ](http://*.com/questions/18270009/reset-timer-of-setinter val) –