jquery键盘暂停捕获

时间:2011-02-09 12:47:34

标签: jquery

正在捕捉调用每个密钥的密钥事件。

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

});

但我需要的东西就像当用户连续输入字符并给出第5个字符或第n个字符的传递时,只有我想要触发ajax调用。在这里我们可以使用超时功能来捕获事件但是每个按键都会调用超时功能,所以再次发生同样的事情

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

此处我们需要中止以前的事件或ajax调用,因为再次用户开始搜索。

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

在jquery中有一段更好的方法可以在一段时间后捕获事件。请指教我,

提前致谢

1 个答案:

答案 0 :(得分:4)

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请求和计时器,以便您可以使用{{1}停止计时器}