Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 正在使用setInterval,但希望在检测到用户输入时禁用它_Javascript_Ajax_Jquery - Fatal编程技术网

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不理解您的问题。非常感谢您提供了一个工作示例,我现在就开始。请您再次查看我的编辑,我认为我做错了。请在文档准备好后尝试触发它。(请参见编辑)。另外,请检查控制台中是否有任何错误。谢谢。它能工作吗,非常有用再次感谢