这是我的代码:
// Refresh feeds, but ONLY when you are NOT typing
var refreshId = setInterval(function() {
$("#load-feeds").load('/actions/loadfeed.php?randval='+ Math.random());
}, 9000);
$.ajaxSetup({ cache: false });
我正在开发像Facebook这样的“墙”,你可以对彼此的帖子发表评论。墙壁会自动刷新AJAX(每9秒钟),但是当您正在键入并且文本区域被聚焦时,它会在页面刷新后删除焦点和文本框的内容。
如何在您不打字时进行刷新,并在打字时停止。谢谢!我到处寻找并尝试了一切,但没有运气。
答案 0 :(得分:2)
我想你有一个这样的输入框:
<input type="text" id="input-box" ... />
你需要做的就是保留一个全局变量,而不是说这个输入是否具有焦点:
var isTyping = false;
$("#input-box").focus(function() {
isTyping = true;
});
$("#input-box").blur(function() {
isTyping = false;
});
然后您必须先检查此变量才允许更新:
// Refresh feeds, but ONLY when you are NOT typing
var refreshId = setInterval(function() {
if (!isTyping) {
$("#load-feeds").load('/actions/loadfeed.php?randval='+ Math.random());
}, 9000);
}
$.ajaxSetup({ cache: false });
答案 1 :(得分:0)
您应该在键入时保持timeout
计时器运行,并在加载前进行检查:
var typing = false,
theTimer,
refreshId = setInterval(function() {
typing || $("#load-feeds").load('/actions/loadfeed.php?randval='+ Math.random());
}, 9000);
$.ajaxSetup({ cache: false });
$('#theInput').keyup(function() {
typing = true;
theTimer && clearTimeout(theTimer);
theTimer = setTimeout(function() {
typing = true;
}, 500);
});