我正在使用setInterval
调用一个函数,该函数通过ajax get请求加载我的页面,并将响应输出到页面排序,就像“实时更新”页面一样,我有注释和输入框提交评论但问题是,当用户在表单中输入数据时,它会同时重置,因为页面在后台使用ajax调用进行刷新。
我的问题是:我如何才能使表格如果表单上有任何用户输入(可能是表单ID)然后禁用计时器,直到他们离开表单元素的焦点?
我希望这是有道理的,
答案 0 :(得分:2)
我认为你需要使用jquery的焦点和模糊功能
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();
});
答案 1 :(得分: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
答案 2 :(得分:1)
也可以使用clearInterval
方法。
//start the routine
var myRoutine = setInterval(blah);
//stop the routine
clearInterval(myRoutine);
您可能需要使用您喜欢的Web框架将事件侦听器附加到表单<input>
元素,并在这些事件侦听器中调用clearInterval
。
答案 3 :(得分: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();
});