jquery - 关注输入字段时中断刷新事件
问题描述
我有一个脚本,如果刷新页面(如果 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>
解决方案
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)
});
});
推荐阅读
- javascript - 如何访问 if 语句检查值?在 if 块旁边?
- django - Django中数据库的动态菜单
- jquery - 在 AJAX 之后滚动到 div 的底部
- swift - 将 isSelected 设置为 true 不更改图像
- python - Python ZipFle 放气
- javascript - 为什么我的函数没有将表单值推送到数组?
- javascript - 使用 `fetch` API 创建多个 cookie 上下文
- mysql - 根据购买历史在 SQL 中绑定客户 ID
- c++ - 我的扩展消息框 XMessageBox 不刷新自身 - C++
- java - 无法实例化 [org.springframework.orm.hibernate5.LocalSessionFactoryBean]:工厂方法 'sessionFactory' 抛出异常