首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >限制ajax livesearch函数

限制ajax livesearch函数
EN

Stack Overflow用户
提问于 2011-08-06 11:07:55
回答 2查看 698关注 0票数 2

我想限制一下我写的以下ajax实时搜索功能。

我这样做是为了只有在输入至少2个字符的情况下才发送请求。我还想在四分之一秒内限制ajax,让用户有机会输入他们想要的内容。我将ajax包装在一个setTimeout函数中,但这不起作用。

代码语言:javascript
复制
        $('#search').keyup(function() {
            var string = $(this).val();
            if (string.length >= 2) {
                $.ajax({
                    'type': 'GET',
                    dataType: 'html',
                    'url': url,
                    'success': function(data){
                                    // show the search data
                    }
                });                                             
            } else if (string.length <= 1) {
                        // restore page content as of when it was loaded
            }
        });

我应该问的另一件事是,我可能应该缓存ajax的结果,不是吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-08-06 11:20:59

只有if (string.length >= 2)中的代码:

代码语言:javascript
复制
var elem = $(this);
// save newest search
elem.data('search',search)
// clear pending searches
.clearQueue().stop()
// waits
.delay(250)
// runs search
.queue(function() {
    $.ajax({
        'type': 'GET',
        dataType: 'html',
        'url': url,
        'success': function(data){

        // check if can be run
        if(elem.data('search') != search)
            return;

                // show the search data
        }
    });
});
票数 1
EN

Stack Overflow用户

发布于 2011-08-06 11:17:07

看看(或者考虑使用) Jquery Autocomplete的源代码,它做的几乎就是你想要的,它只在暂停后提交数据,以确保用户完成了,并且它有一个缓存,以及其他特性。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6964501

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档