【问题标题】:Limit # of results autocomplete jquery ui using slice function使用切片函数限制结果自动完成 jquery ui 的数量
【发布时间】:2013-11-22 05:42:34
【问题描述】:

我有同样的问题:Limit results autocomplete jquery ui with slice function,过去 2 小时左右一直在寻找解决方案(除了使用 CSS 隐藏)。

我想添加这个切片功能,这里演示:https://stackoverflow.com/a/7617637/1607449

$("#auto").autocomplete({
source: function(request, response) {
    var results = $.ui.autocomplete.filter(myarray, request.term);

    response(results.slice(0, 10));
   }
});

我希望它与本示例中的脚本一起使用:http://jsfiddle.net/h5E6C/(不是我的数组/脚本,但我的设置类似)。

我正在寻找这个问题的解决方案,所以请不要在发送等之前提出使用 PHP/SQL 过滤数据的建议。不要粗鲁..

我可以让任一脚本彼此独立工作,但不能一起工作:/

【问题讨论】:

  • 你为什么不直接使用 minlength 选项?
  • 因为我正在使用搜索来查找少数建筑物中的房间号。如果有人输入“2”或“5”,那么让它开始填充结果会很好。 (如果房间的长度只有 1 个数字,(即房间 #8))
  • 使用搜索事件怎么样?
  • 以什么方式?搜索事件一旦返回就不会影响结果,它只会在您为其指定满足某些条件时阻止搜索发生。

标签: javascript jquery jquery-ui


【解决方案1】:

想通了,只需要添加

.slice(0, 10)

到另一个响应函数。

之前:

function custom_source(request, response) {
    var matcher = new RegExp($.ui.autocomplete.escapeRegex(request.term), "i");
    response($.grep(schools, function(value) {
        return matcher.test(value.value)
            || matcher.test(value.nickname);
    }));
}

之后:

function custom_source(request, response) {
    var matcher = new RegExp($.ui.autocomplete.escapeRegex(request.term), "i");
    response($.grep(schools, function(value) {
        return matcher.test(value.value)
            || matcher.test(value.nickname);
    }).slice(0, 10)
);
}

以为我已经尝试过了,但我之前一定是把 slice 函数放在了错误的地方。

【讨论】:

    猜你喜欢
    • 2012-10-08
    • 2011-11-28
    • 1970-01-01
    • 2014-03-03
    • 1970-01-01
    • 1970-01-01
    • 2012-06-02
    • 2011-05-03
    相关资源
    最近更新 更多