Javascript 正在使用setInterval,但希望在检测到用户输入时禁用它
我使用Javascript 正在使用setInterval,但希望在检测到用户输入时禁用它,javascript,ajax,jquery,Javascript,Ajax,Jquery,我使用setInterval调用一个函数,该函数通过ajax get请求加载我的页面,并将响应输出到页面,有点像“实时更新”页面,我有一些评论被拉出来,还有一些评论提交的输入框,但问题是当用户在表单中输入数据时,它会同时重置,因为页面在后台通过ajax调用刷新 我的问题是:如何使表单上有任何用户输入(可能是通过表单id),然后禁用计时器,直到它们离开表单元素的焦点 我希望这是有意义的,请改用setTimeout,您可以 var t; t = setTimeout(function(){
setInterval
调用一个函数,该函数通过ajax get请求加载我的页面,并将响应输出到页面,有点像“实时更新”页面,我有一些评论被拉出来,还有一些评论提交的输入框,但问题是当用户在表单中输入数据时,它会同时重置,因为页面在后台通过ajax调用刷新
我的问题是:如何使表单上有任何用户输入(可能是通过表单id),然后禁用计时器,直到它们离开表单元素的焦点
我希望这是有意义的,请改用setTimeout,您可以
var t;
t = setTimeout(function(){
//whatever you like
}, 1000);
$('input').one('click', function(){
clearTimeout(t);
});
阅读-请改用设置超时,您可以
var t;
t = setTimeout(function(){
//whatever you like
}, 1000);
$('input').one('click', function(){
clearTimeout(t);
});
阅读-也可以简单地使用
clearInterval
方法
//start the routine
var myRoutine = setInterval(blah);
//stop the routine
clearInterval(myRoutine);
您可能需要使用您喜爱的web框架将事件侦听器附加到表单
元素,在这些事件侦听器中,调用clearInterval
也可以使用clearInterval
方法
//start the routine
var myRoutine = setInterval(blah);
//stop the routine
clearInterval(myRoutine);
您可能需要使用您喜爱的web框架将事件侦听器附加到表单
元素,在这些事件侦听器中,调用clearInterval
,您只需要使用clearInterval
$(function() {
var AtlassTimer,
i = 0;
function oncommententer()
{
console.log('Clear');
clearInterval(AtlassTimer);
}
function oncommentleave()
{
console.log('Start');
AtlassTimer = setInterval(loadactiveusers, 1000);
}
function loadactiveusers() {
$('#result').html(i++);
}
$('#formId input').on({
'keypress change': oncommententer,
blur: oncommentleave
});
//Init
oncommentleave();
});
您只需要使用
clearInterval
$(function() {
var AtlassTimer,
i = 0;
function oncommententer()
{
console.log('Clear');
clearInterval(AtlassTimer);
}
function oncommentleave()
{
console.log('Start');
AtlassTimer = setInterval(loadactiveusers, 1000);
}
function loadactiveusers() {
$('#result').html(i++);
}
$('#formId input').on({
'keypress change': oncommententer,
blur: oncommentleave
});
//Init
oncommentleave();
});
我认为您需要使用jquery的focus和blur函数
var my_interval;
function start_interval(){
my_interval = setInterval(function(){
my_ajax_function()}, 2000);
}
$('input').focus( function() {
clearInterval(my_interval);
});
$('input').blur( function() {
start_interval();
});
我认为您需要使用jquery的focus和blur函数
var my_interval;
function start_interval(){
my_interval = setInterval(function(){
my_ajax_function()}, 2000);
}
$('input').focus( function() {
clearInterval(my_interval);
});
$('input').blur( function() {
start_interval();
});
“输入”是什么意思?点击键入?…它不只是重新启动间隔,甚至不清除间隔?你说的“输入”是什么意思?点击键入?…它不只是重新启动间隔,甚至不清除间隔?他使用的是间隔,而不是超时。我建议您使用[setTimeout],而不是[setInterval];原因是[setInterval]更具攻击性。[setTimeout]运行一次然后停止,您必须在每次完成当前[setTimeout]任务时调用它,这使您的代码更具逻辑性。[setInterval]会一直运行,直到你停止它-它就像一个全局值,一旦你有太多,你甚至不知道它来自哪里。他使用的是一个间隔,而不是超时。我建议你使用[setTimeout],而不是[setInterval];原因是[setInterval]更具攻击性。[setTimeout]运行一次然后停止,您必须在每次完成当前[setTimeout]任务时调用它,这使您的代码更具逻辑性。[setInterval]将一直运行,直到您停止它-它就像一个全局值,一旦您拥有太多,您甚至不知道它来自何处。我不理解您的问题。非常感谢您提供了一个工作示例,我现在就开始运行。请您再次查看我的编辑,我想我做错了什么。请在文档准备好后尝试触发它。(请参见编辑)。另外,请检查控制台中是否有任何错误。谢谢。git it working,非常有用谢谢againI不理解您的问题。非常感谢您提供了一个工作示例,我现在就开始。请您再次查看我的编辑,我认为我做错了。请在文档准备好后尝试触发它。(请参见编辑)。另外,请检查控制台中是否有任何错误。谢谢。它能工作吗,非常有用再次感谢