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

标签 javascript jquery jquery-ui combobox jquery-ui-autocomplete

我发现了不止几个使用普通 jquery 自动完成的示例,但无法与来自 the demo 的组合框代码中包含的自动完成一起使用。因为代码的结构非常不同。

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

所需的搜索/结果组合:(请原谅空格)
第五”“第一第一秒第三”
rs on”“第rson第三”
ec rd”“第一个ec,第三个rd
但不限于任何最大/最小长度或 token 数量。

编辑

我使用我正在工作的其他自动更正器中的代码结构弄清楚了其中的一部分。

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; 在 map 函数的返回上,我可以单击以选择一个项目。如果我离开它,我可以输入多个单词,但无法单击任何项​​目...

这是问题还是选项:这个?我尝试将其替换为 HTMLOptionElementnull 但我陷入困境。

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

最佳答案

我一时兴起添加了ui.item.option = ui.item.value;到选择标签,一切都按预期进行。选项:源中的值现在似乎并不重要。

*我并不声称这些都是良好的编码实践

更新了 fiddle :http://jsfiddle.net/eY3hM/

关于javascript - 如何在 jQuery 组合框自动完成中匹配多个子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12537767/

相关文章:

jquery - 尝试使用 Jquery 根据关键字检索可能的 youtube 视频列表

javascript - 动态加载 rel 属性中的链接。

javascript - Cart to Fly Uncaught TypeError : Cannot read property 'top' of undefined

jQuery UI 自动完成 - 从字符串的开头搜索

javascript - 使用 pako.js 在 javascript 中生成 Gzip 字符串

javascript - 为什么 window.name 被缓存?

javascript - 使用 moment.js 的 dd-MM-yyyy 日期格式

javascript - 如何设置数组中推送对象的属性?

jquery - 添加百分比到jquery旋钮输入值

javascript - 动态添加的选择更改事件未注册