Javascript 如何在jQuery组合框自动完成中匹配多个子字符串

Javascript 如何在jQuery组合框自动完成中匹配多个子字符串,javascript,jquery,jquery-ui,combobox,jquery-ui-autocomplete,Javascript,Jquery,Jquery Ui,Combobox,Jquery Ui Autocomplete,我在简单的jqueryautocomplete中找到了不止两个这样的例子,但在combobox代码中包含的autocomplete中却无法使用,因为代码的结构非常不同 我想匹配在任何单词中任何位置具有所有搜索标记的每个项目。我不需要匹配任何单词的开头,任何部分都可以。我不在乎搜索字符串是否在自动完成列表中突出显示,如果这使事情变得太复杂的话 所需搜索/结果组合:请原谅间隔 第一第二税务局 在fi上的rs t秒在d第三 东路第一西路第二西路 但不限于任何最大/最小长度或令牌数量 编辑 我用另一个自

我在简单的jqueryautocomplete中找到了不止两个这样的例子,但在combobox代码中包含的autocomplete中却无法使用,因为代码的结构非常不同

我想匹配在任何单词中任何位置具有所有搜索标记的每个项目。我不需要匹配任何单词的开头,任何部分都可以。我不在乎搜索字符串是否在自动完成列表中突出显示,如果这使事情变得太复杂的话

所需搜索/结果组合:请原谅间隔 第一第二税务局 在fi上的rs t秒在d第三 东路第一西路第二西路 但不限于任何最大/最小长度或令牌数量

编辑 我用另一个自动更正的代码结构计算出了其中的一部分

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);
},

但我不能同时获得多个单词,也不能同时单击选择“工作”

如果我删除}?项目:空;在地图功能中返回时,我可以单击以选择项目。如果我离开它,我可以键入多个单词,但我不能单击任何项目

这是问题还是选择:这个?我试着用HTMLOptionElement和null替换它,我被卡住了

我可以在选择标签中使用ui.item.value设置另一个字段的值,但这不会将值放入搜索框或关闭下拉菜单。

我一时兴起添加了ui.item.option=ui.item.value;选择标签,一切正常。选项:源代码中的值现在似乎并不重要

*我不认为这是一种好的编码实践


更新的fiddle:

在您的代码中,您是否使用与示例相同的源代码类型?基础选择列表?还是从服务器获取自动完成数据?到目前为止,这与jQuery ui自己解决的问题完全相同,见下文。我真的希望有一天其他人能利用这一点!
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
},