【问题标题】:jQuery UI: Autocomplete - How do I search multiple values within an array?jQuery UI:自动完成 - 如何在数组中搜索多个值?
【发布时间】:2012-04-16 08:17:09
【问题描述】:

如果你看看下面的JS:(直播:http://jsfiddle.net/RyanWalters/dE6T3/2/

var projects = [
    {
        value: "jquery",
        label: "jQuery",
        desc: "the write less, do more, JavaScript library",
        icon: "jquery_32x32.png"
    },
    {
        value: "jquery-ui",
        label: "jQuery UI",
        desc: "the official user interface library for jQuery",
        icon: "jqueryui_32x32.png"
    },
    {
        value: "sizzlejs",
        label: "Sizzle JS",
        desc: "a pure-JavaScript CSS selector engine",
        icon: "sizzlejs_32x32.png"
    }
];


$("#autocomplete").autocomplete({
    source: function(request, response){
        var matcher = new RegExp( $.ui.autocomplete.escapeRegex( request.term ), "i" );
        response( $.grep( projects, function( value ) {
            value = value.value || value.desc || value.icon;
            return matcher.test( value );
        }) );
    }
});

我正在尝试对 projects 数组中的 valuedescicon 字段进行自动完成搜索。但是,当我在搜索框中输入值时,我只能搜索 value 字段。 descicon 字段被完全忽略。

我怎样才能使我可以在三个字段中的任何一个字段中搜索文本?

【问题讨论】:

  • 你不能只是“返回 matcher.test(value.value) || matcher.test(value.desc) || matcher.test(value.icon);” ?

标签: javascript jquery jquery-ui autocomplete jquery-ui-autocomplete


【解决方案1】:
value = value.value || value.desc || value.icon;

这会将值设置为第一个“thuthy”值(始终为value.value)。

试试这样的:

response($.grep(projects, function(value) {
    return matcher.test(value.value) || matcher.test(value.desc) || matcher.test(value.icon);
}));

【讨论】:

    猜你喜欢
    • 2017-07-10
    • 1970-01-01
    • 2018-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-13
    相关资源
    最近更新 更多