设置多个propertyToSearch来搜索

时间:2016-04-12 09:16:55

标签: jquery jquery-tokeninput

使用jQuery的插件tokenInput我已经设置了我的propertyToSearch:" name"

但我还想搜索另一个字段:

propertyToSearch: "name,email"

propertyToSearch: ["name","email"]

这甚至可能吗?

1 个答案:

答案 0 :(得分:0)

如果不在jQuery-tokeninput.js中更改插件的核心,就无法做到这一点。 基本上你需要在两个地方拆分propertyToSearch并为每个找到的属性做一些事情。

我做了什么(第924行):

                    var this_li;

                if($(input).data("settings").propertyToSearch.indexOf(',') > -1){
                    var propertiesToSearch = $(input).data("settings").propertyToSearch.split(',');
                }

                if(typeof propertiesToSearch != 'undefined' && propertiesToSearch.length > 0){
                    this_li = $(input).data("settings").resultsFormatter(value);
                    $.each(propertiesToSearch, function(index, property){                           
                        this_li = find_value_and_highlight_term(this_li ,value[property], query);
                    });
                    this_li = $(this_li).appendTo(dropdown_ul);
                }
                else{
                    this_li = $(input).data("settings").resultsFormatter(value);
                    this_li = find_value_and_highlight_term(this_li ,value[$(input).data("settings").propertyToSearch], query);
                    this_li = $(this_li).appendTo(dropdown_ul);
                }

围绕第1091行的类似变化:

                    // Do the search through local data
                var results = $.grep($(input).data("settings").local_data, function (row) {

                    if($(input).data("settings").propertyToSearch.indexOf(',') > -1){
                        var propertiesToSearch = $(input).data("settings").propertyToSearch.split(',');
                    }
                    if(typeof propertiesToSearch != 'undefined' && propertiesToSearch.length > 0){
                        var status = false;
                        $.each(propertiesToSearch, function(key, value){
                            if(row[value].toLowerCase().indexOf(query.toLowerCase()) > -1){
                                status = true;
                            }
                        });

                        return status;
                    }
                    else{
                        return row[$(input).data("settings").propertyToSearch].toLowerCase().indexOf(query.toLowerCase()) > -1; 
                    }                        
                });