使用javascript/jQuery在2秒后触发事件

 手机用户2602885631_316 发布于 2023-02-08 15:01

我有类似的要求,如jquery-run-code-2-seconds-after-last-keypress.

现在,当我使用@brad代码时,它可以正常工作: -

$('input.username').keypress(debounce(function (event) {
    console.log('Search keypress');
}, 250));

但不是在: -

$('#search').keypress(function () {
    debounce(function (event) {
        console.log('Search keypress');
   }, 2000);
});

小提琴这里.任何帮助都会非常有用.

编辑:-

最初我做了类似下面的事情,这不是我想要的 -

$('#search').keypress(function () {
    setTimeout(function () {
      console.log('Search keypress');
    }, 3000);
});

编辑2: - 我想要一些非常类似于下面的东西: - (从那里复制的文字)

在输入3个字符后,它将在每次按键时搜索.

我想要的是

案例1:
用户输入测试
2秒后执行搜索


情况2:
用户输入测试
1秒通过
用户按t
2秒
测试通过搜索

案例3:
用户输入测试
1秒通过
用户按下t
1.5秒通过
用户按下i
1.5秒通过
用户按下n
1.5秒通过
用户按g
2秒通过
搜索执行测试

如您所见,搜索操作仅在按键后两秒内没有按键(或粘贴等)时执行.

我的基本想法是.

on keydown调用一个设置超时的函数,该函数还设置一个包含文本框中最后一个条目的变量.当超时到期时,它会检查框中的值以查看它是否与变量中的值匹配.

2 个回答
  • 更新:这是2秒钟的去抖(等待2秒):小提琴

    $('#search').keyup( debounce(function() {
           console.log('Search keypress');
            var text = $('#search').val();
    
            $('#textTobeSearched').text(text); 
        }, 2000));
    

    使用setTimeout

    $('#search').keypress(function() {
        setTimeout(function() {
            console.log('search keypress');
        }, 2000);
    });
    

    2023-02-08 15:03 回答
  • 要使用超时去除它:

    {BTW,使用keyup事件代替keypress,delete key不会触发keypress事件,请参阅:http://www.quirksmode.org/js/keys.html }

    DEMO

    var timer;
    $('#search').keyup(function () {
        clearTimeout(timer);
        timer = setTimeout(function (event) {
    
            console.log('Search keypress');
            var text = $('#search').val();
    
            $('#textTobeSearched').text(text);
        }, 2000);
    });
    

    2023-02-08 15:05 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有