我发现了不止几个这样的例子,它带有一个普通的 jquery 自动完成功能,但不能与演示中的组合框代码中包含的自动完成功能一起使用,因为代码结构的结构如此不同。
我想匹配在任何单词中任何位置具有所有搜索标记的每个项目。我不需要匹配任何单词的开头,它的任何部分都可以。我不在乎搜索字符串是否在自动完成列表中突出显示,如果这会使事情变得过于复杂。
所需的搜索/结果组合:(请原谅间距)
“ fi th ”“ first second th third”
“ rs on ”“ firs t sec on d third”
“ ec rd ”“first s sec ond third ”但
不是限于任何最大/最小长度或令牌数量。
编辑
我使用我工作过的另一个自动更正的代码结构找出了其中的一部分。
source: function( requestObj, responseFunc ) {
var matchArry = $("select > option").map(function(){return this.innerHTML;}).get();
var srchTerms = $.trim(requestObj.term).split(/\s+/);
// For each search term, remove non-matches
$.each (srchTerms, function (J, term) {
var regX = new RegExp (term, "i");
matchArry = $.map (matchArry, function (item) {
if( regX.test(item) ){
return{
label: item,
value: item,
option: HTMLOptionElement
} ? item :null;
}
} );
});
// Return the match results
responseFunc (matchArry);
},
和
select: function( event, ui ) {
ui.item.option.selected = true;
self._trigger( "selected", event, {
item: ui.item.option
});
$("destination").val(ui.item.value); // I added this line
},
但我不能同时获得多个单词并且能够单击以选择同时工作。
如果我删除} ? item :null;
地图功能中的返回,我可以单击以选择一个项目。如果我离开它,我可以输入多个单词,但我无法单击任何项目......
这是问题还是问题option: this
?我试过用HTMLOptionElement
and替换它,null
但我被卡住了。
我可以ui.item.value
在选择标签内设置另一个字段的值,但这不会将值放在搜索框中或关闭下拉菜单。