我想在提交按钮事件上开始/显示timer
。我正在使用spring mvc。所以在提交时,它会进入控制器,执行一些逻辑并被重定向回到原始的jsp页面。问题是当计时器从控制器重定向时,页面加载时会重置。一旦计时器启动,它就不应该是重置,直到单击停止计时器按钮。我如何实现这个功能?我正在使用一个jquery计时器插件,但它不太正常。我尝试添加counter=0
值,它也不正确。
这是我的代码:
var counter=0;
function updatecounter(){
counter = 1;
Example1.init();
}
var Example1 = new (function() {
var $stopwatch,
incrementTime = 70,
currentTime = 0,
updateTimer = function() {
$stopwatch.html(formatTime(currentTime));
currentTime += incrementTime / 10;
};
this.init = function() {
$stopwatch = $('#stopwatch');
Example1.Timer = $.timer(updateTimer, incrementTime, true);
};
this.resetStopwatch = function() {
currentTime = 0;
this.Timer.stop().once();
};
if(counter!=0){
$(init);
}
});
HTML标记:
<h2><span id="stopwatch">00:00:00:00</span></h2>
<input type="submit" value="Run Script" name="Run Script" class="button"onclick='updatecounter();' />
<input type="submit" value="Stop Script" name="Stop Script" class="button" onclick='Example1.resetStopwatch();/>
答案 0 :(得分:1)
我不打算尝试创建一个完整的应用程序堆栈,所以我会保持这个简单。
如果你必须重定向到Spring Controller,那么你将不得不
所以在伪代码中:
if( startTime IS set ){
timer.start();
timer.setStartTime( startTime );
}
这将假设您的计时器只是计算与开始时间的差异以显示计数。
然而,更好的选择是页面不能重定向到服务器 只需发送一个AJAX请求,让它随时返回,你可以让你的计时器一直运行。
这最有意义,因为您问题的本质("I need this thing to happen at the same time another thing is happening!"
)尖叫 异步,这是 A 在AJAX中。
答案 1 :(得分:0)
答案 2 :(得分:0)
好的最后我找到了解决问题的方法。在提交时,我在服务器端创建了一个标志,并在页面加载时将其传递给jsp。基于该标志,它会自动启动计时器。由于它是一个快速的过程,(转发到控制器并重定向回jsp),时间延迟可以忽略不计。