【问题标题】:How to match multiple substrings in jQuery combobox autocomplete如何在jQuery组合框自动完成中匹配多个子字符串
【发布时间】:2012-09-27 04:43:05
【问题描述】:

我发现不止几个这样的示例,它们使用纯 jquery 自动完成功能,但无法与 the demo 的组合框代码中包含的自动完成功能一起使用,因为代码结构的结构如此不同。

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

所需的搜索/结果组合:(请原谅空格)
"fi th" "fi rst second th ird"
"rs on" "fi rs t sec on d third"
"ec rd" "first s ec ond thi 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 设置另一个字段的值,但这不会将值放入搜索框中或关闭下拉菜单。

【问题讨论】:

  • 在您的代码中,您是否使用与示例相同类型的源代码?底层选择列表?还是您从服务器获取自动完成数据?
  • 目前为止和jQuery-ui demo一模一样
  • 自己解决了,见下文。我真的希望有一天其他人可以使用它!

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


【解决方案1】:

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

*我没有声称这是良好的编码习惯

更新小提琴:http://jsfiddle.net/eY3hM/

【讨论】:

    猜你喜欢
    • 2011-04-11
    • 2014-09-01
    • 2016-02-08
    • 2019-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多