我对 jQuery 很陌生,我想做一些我认为不应该那么复杂的事情:我想在用户开始填写表单时启动一个 60 秒的计时器。当定时器达到 0 时,它会触发其他功能。
到目前为止我得到了什么:
$('form').click(function(){
$(function(){
var count = 60;
countdown = setInterval(function(){
$("p#timer").html(count);
if (count == 0) {
$("p#sentence").html("Time's up! You lost.");
$("form").addClass('lost');
clearInterval(countdown);
}
count--;
}, 1000);
});
});
这段代码有效并且完全符合我的要求。唯一的问题是,当用户单击表单的另一部分(例如,另一个输入)时,它会启动与第一个不同步的第二个计时器并覆盖它。基本上,每次用户单击表单时,都会启动另一个计时器,并且事情会变得很糟糕。
现在,看到这一点,这段代码就可以做到这一点似乎很合乎逻辑。然而,我只是不知道该怎么做才能防止它发生。
我试图给表单一个类并在用户单击后将其删除:
$('form.timer_idle').click(function(){
$(this).removeClass('timer_idle');
$(function(){
var count = 60;
countdown = setInterval(function(){
$("p#timer").html(count);
if (count == 0) {
$("p#sentence").html("Time's up! You lost.");
$("form").addClass('lost');
clearInterval(countdown);
}
count--;
}, 1000);
});
});
我希望它会起作用,但它没有。第一次单击后确实删除了 .timer_idle 类,但它并没有阻止脚本在之后运行。