我发现了几个使用普通jquery自动完成功能的示例,但是这些示例无法与the demo组合框代码中包含的自动完成功能一起使用,因为代码的结构是如此不同。
我想匹配在任何词中任何位置都具有所有搜索标记的每个项目。我不需要匹配任何单词的开头,任何部分都可以。我不在乎搜索字符串是否会在自动完成列表中突出显示,否则会使事情变得过于复杂。
期望的搜索/结果组合:(请原谅)
“第一”“第一第二”
“第三个月”
“ ec rd”“第一秒”
但不限于任何最大/最小长度或令牌数。
编辑
我使用我工作过的其他自动更正的代码结构来弄清了其中的一部分。
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
和null
替换它,但遇到了麻烦。我可以在选择标签内使用
ui.item.value
设置另一个字段的值,但这不会将该值放在搜索框中或关闭下拉菜单。 最佳答案
一时兴起,我在选择标签上添加了ui.item.option = ui.item.value;
,一切正常。选项:源中的值现在似乎无关紧要。
*我不声称这是一种良好的编码习惯
更新的小提琴:http://jsfiddle.net/eY3hM/