首页 > 解决方案 > 关注输入字段时中断刷新事件

问题描述

我有一个脚本,如果刷新页面(如果 ajax 响应为 1),则每 10 秒检查一次,该页面也有一个聊天框。如果用户在聊天框中有焦点(和写作),自动刷新检查应该停止。

有可能吗?

查询

$( document ).ready(function() {
setInterval( CheckUpdate, 10000, 22 );
});

function CheckUpdate(n){    
$.post( "test.php", { game: n })
  .done(function( data ) {
    if (data==1) window.location.href = "https://thispagerefresh.com";
  });
}

HTML

<form action=? method=post id=chatform>
  <input type="text" name=chat id=chatinput>
    <button type="submit" name=chatbtn id=chatbtn>Send</button>
</form>

标签: jquery

解决方案


setInterval()您可以通过首先将返回值存储在变量中来解决此问题。

// Syntax
var intervalID = setInterval(func, [delay, arg1, arg2, ...]);

返回intervalID的是一个数字的非零值,用于标识调用创建的计时器setInterval()。然后,每当用户在聊天框中获得焦点(和写作)时,我们就停止setInterval使用这个存储的值 usingclearInterval()方法。

// Syntax
clearInterval(intervalID)

因此,完整的代码将如下所示:

$(document).ready(function() {
  var intervalID = setInterval(CheckUpdate, 10000, 22);

  // Check if user has the focus (and writing) in the chatbox
  $("#chatinput").on("input", function() {
    clearInterval(intervalID)
  });
});

推荐阅读