我有一个jquery自动填充小部件,它使用自定义数据显示项目。除字段字段以外的搜索字段
他们都有一个value
和description
。
目前value
插入文本框,单击某个项目时,与项目的value
是什么是搜索
我想什么做的是有过滤器同时使用的value
和description
过滤时的物品显示,但只保留插入的value
。
我该如何做到这一点?
我有一个jquery自动填充小部件,它使用自定义数据显示项目。除字段字段以外的搜索字段
他们都有一个value
和description
。
目前value
插入文本框,单击某个项目时,与项目的value
是什么是搜索
我想什么做的是有过滤器同时使用的value
和description
过滤时的物品显示,但只保留插入的value
。
我该如何做到这一点?
如果你给autocompleter对象与value
和label
(而不是description
)性质的阵列,它会做过滤你,但仅在label
(不是value
)。
如果您为source
option指定函数,则需要自己进行筛选。您会收到一个request
参数(一个带有term
属性的对象)和一个response
参数(一个用结果回调的函数)。然后,您可以使用任何您喜欢的搜索方式自行返回相关结果(例如,您可以在代码中同时搜索value
和description
)。
例如,松散:
$("some selector").autocomplete({
// ...other options...
source: function(request, response) {
var matches = [];
/* ...search for matches in your data using `request.term`,
add them to `matches`...
*/
response(matches);
}
});
返回数组可以是只是字符串,或者它可以与value
和label
性质是对象。将显示label
,选中时将使用value
。
因此,例如,这里有一个使用的机场,在那里,当你键入它检查两个value
(机场代码)的(短)列表和description
(机场名):Live copy | source
jQuery(function($) {
var data = [
{value: "ORD", description: "Chicago O'Hare"},
{value: "LHR", description: "London Heathrow"},
{value: "SFO", description: "San Francisco International"}
];
$("#theInput").autocomplete({
source: function(request, response) {
var capterm = request.term.toUpperCase();
var matches = $.map(data, function(entry) {
if (entry.value.toUpperCase().indexOf(capterm) !== -1 ||
entry.description.toUpperCase().indexOf(capterm) !== -1) {
return {
value: entry.value,
label: entry.value + " - " + entry.description
};
}
});
response(matches);
}
});
});
所以,键入“或”或“时尚”将告诉你“ORD - 芝加哥奥黑尔”,并选择它会把“ORD”领域。键入“san”或“sfo”会向您显示“SFO - 旧金山国际”并选择它将在该字段中添加“SFO”。
不是'source'只是提供要搜索的字符串数组,而不是匹配查询的字符串数组? – jackwanders 2012-07-24 15:05:44
@jackwanders:如果您为源提供数组,则自动完成程序将为您执行过滤。如果你提供了一个函数或URL,你需要自己进行过滤,自动完成程序将不会执行任何操作。请参阅autocompleter文档的[“概述”](http://jqueryui.com/demos/autocomplete/)部分,这几乎几乎没有提及 - 然后仅仅是因为我提出了一个月票回来得到他们添加它。 :-) jQuery UI很棒。文档(除了主题以外)都不是很好。 – 2012-07-24 15:18:42
不知道你正在使用哪个自动完成插件,我最好的猜测是你必须修改它用来过滤它的项目列表的函数。你使用哪个插件? – 2012-07-24 14:50:49
我们需要查看您正在使用哪种数据。请发布一些代码,例如您对'autocomplete'小部件的调用,并且您的'source'数组 – jackwanders 2012-07-24 14:50:53