2013-12-17 24 views
0

我打电话的功能与setInterval对于加载我的网页通过Ajax的GET请求,并输出到有点像一个“实时更新”页面的页面响应,我有被拉扯的意见和输入框征求意见提交,但问题是,当用户输入数据到窗体它同时复位,因为页面是与Ajax调用后台让人耳目一新。使用setInterval的,但要禁用它,当用户输入检测

我的问题是:我怎样才能让这个如果窗体上的任何用户输入(通过形式ID可能),以便然后关闭计时器,直到他们已经离开了表单元素的重点是什么?

我希望这是有道理的,

+0

你是什么意思“输入”使用jquery的重点和模糊函数?点击?类型?...... – HICURIN

+0

它不仅重新启动的时间间隔或者甚至没有明确的时间间隔? –

回答

1

你只需要使用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(); 
}); 
+0

这可以从输入标记的内联级别工作吗? – Dean

+0

我不明白你的问题。 – L105

+0

看到我的编辑请 – Dean

1

请使用的setTimeout相反,你可以

var t; 
t = setTimeout(function(){ 
    //whatever you like 
}, 1000); 

$('input').one('click', function(){ 
    clearTimeout(t); 
}); 

阅读 - http://www.w3schools.com/jsref/met_win_cleartimeout.asp

+0

他正在使用间隔,而不是超时。 – sergserg

+0

我建议你使用[setTimeout],而不是[setInterval];原因是[setInterval]更具侵略性。 [的setTimeout]运行一次,然后停下来,你必须把它叫做很长的时间完成当前[setTimeout的]任务,使你的代码更符合逻辑。 [setInterval的]会运行,直到你停止它 - 它像一个全球性的价值,一旦你拥有了太多,你甚至不知道它从何而来。 – Zac

1

只需使用clearInterval方法为好。

//start the routine 
var myRoutine = setInterval(blah); 

//stop the routine 
clearInterval(myRoutine); 

你可能需要使用您喜欢的Web框架以事件侦听器连接到您的形式<input>元素,并在这些事件侦听器,调用clearInterval

2

我想你需要

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(); 
});