打字时不要刷新

发布于 2024-12-02 08:06:43 字数 411 浏览 0 评论 0原文

这是我的代码:

// 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 秒),但是当您键入并且文本字段获得焦点时,它会在页面刷新后删除焦点和文本框的内容。

我怎样才能让它只在您不打字时刷新并在您打字时停止。谢谢!我到处寻找并尝试了一切,但没有运气。

This is my code:

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

I'm working on a kind of "wall" like Facebook where you can comment on each other's posts. The wall automatically refreshes with AJAX (every 9 seconds), but when you're typing and the textfield is focused it removes the focus and the content of the textbox after the page refreshed.

How can I make it only refresh when you're NOT typing and make it stop when you're typing. Thanks! I've looked everywhere and tried everything, but no luck.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

毁梦 2024-12-09 08:06:43

我想你有一个像这样的输入框:

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

I suppose you have an input box like this:

<input type="text" id="input-box" ... />

All you have to do is mantain a global variable than says if this input has the focus:

var isTyping = false;
$("#input-box").focus(function() {
    isTyping = true;
});
$("#input-box").blur(function() {
    isTyping = false;
});

then you just have to check this variable before to allow the update:

// 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 });
难得心□动 2024-12-09 08:06:43

您应该在他们键入时保持超时计时器运行,并在加载之前进行检查:

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

You should keep a timeout timer running when they type, and check before you load:

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);
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文