【问题标题】:jquery keyboard pause catchjquery 键盘暂停捕获
【发布时间】:2011-02-09 12:47:33
【问题描述】:

我正在捕捉调用每个 keyup 的 keyup 事件。

jQuery('#Search').keyup(function() {

});

但是当用户连续键入字符并在第 5 个字符或第 n 个字符处通过时,我需要这样的东西,只有我想触发 ajax 调用。在这里我们可以使用超时函数来捕捉事件,但是每次按键都会调用超时函数,所以同样的事情又发生了

如果用户在暂停后再次开始输入,则它必须再次触发事件/ajax 调用,但仅在某个暂停之后。

在这里,我们需要中止之前的事件或 ajax 调用,因为用户再次开始搜索。

所以我使用.abort(); 函数中止之前的调用。

有没有更好的方法来在 jquery 中捕获一段时间后的事件。请多多指教,

提前致谢

【问题讨论】:

标签: jquery


【解决方案1】:
var search = $('#Search'),
    search_delay = 100; 


search.keyup(function() {
    var request = search.data('request');

    if(request) { // if request is running - abort it
        request.abort(); 
        search.data('request', null);
    }

    clearTimeout(search.data('timer')); // if timer is running - stop it

    search.data('timer', setTimeout(function(){
        // add your ajax call here or pass a reference 
        // to the function that will handle the ajax call
        search.data('request', $.ajax(...)); 
    }, search_delay);

});

您可以使用 jQ data API 来存储对 jQuery 1.5 中引入的 jqXHR 对象的引用,以便能够 abort 请求和计时器,以便您可以使用 clearTimeout 停止计时器

【讨论】:

  • 谢谢汤姆,我会试试这个。
猜你喜欢
  • 1970-01-01
  • 2013-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-05
  • 2017-07-10
  • 2011-01-29
  • 1970-01-01
相关资源
最近更新 更多