jQuery ui自动完成多个值按字母顺序排序结果

jQuery ui自动完成多个值按字母顺序排序结果,jquery,jquery-ui,sorting,jquery-ui-autocomplete,Jquery,Jquery Ui,Sorting,Jquery Ui Autocomplete,关于这个问题,有一个解决方案提供了单值jQuery autocomplete,但是有可能为多值jQuery autocomplete()提供类似的解决方案吗 在响应中,您应该返回与查询中所需结果相匹配的结果列表: e、 g 如果我没有漏掉一个括号,如果输入的术语等于术语列表数组中某个术语的开头,则下拉列表中应该会有多个值。这里唯一的区别是,您需要确保并调用extractLast,就像您链接到的演示一样。以下是应使用多个值的完整代码(请特别注意source选项): $(“#标记”) .on(“按键

关于这个问题,有一个解决方案提供了单值jQuery autocomplete,但是有可能为多值jQuery autocomplete()提供类似的解决方案吗

在响应中,您应该返回与查询中所需结果相匹配的结果列表:

e、 g


如果我没有漏掉一个括号,如果输入的术语等于术语列表数组中某个术语的开头,则下拉列表中应该会有多个值。这里唯一的区别是,您需要确保并调用
extractLast
,就像您链接到的演示一样。以下是应使用多个值的完整代码(请特别注意
source
选项):

$(“#标记”)
.on(“按键按下”),功能(事件){
if(event.keyCode==$.ui.keyCode.TAB&&$(this.data(“自动完成”).menu.active){
event.preventDefault();
}
})
.自动完成({
最小长度:0,
来源:功能(请求、响应){
var term=$.ui.autocomplete.escapeRegex(extractLast(request.term))
//创建两个正则表达式,一个用于查找从用户输入开始的建议:
,startsWithMatcher=newregexp(“^”+术语“i”)
,startsWith=$.grep(源,函数(值){
返回startsWithMatcher.test(value.label | | value.value | | value);
})
//…和另一个用于查找仅包含用户输入的建议:
,containsMatcher=newregexp(术语“i”)
,contains=$.grep(源,函数(值){
返回$.inArray(值,startsWith)<0&&
容器匹配器测试(value.label | | value.value | | value);
});            
//向小部件提供一个数组,其中包含从用户输入开始的建议,
//然后是那些只包含用户输入的。
响应(startsWith.concat(contains));
},
焦点:功能(){
返回false;
},
选择:功能(事件、用户界面){
var术语=分割(该值);
terms.pop();
术语推送(ui.item.value);
术语。推送(“”);
this.value=terms.join(“,”);
返回false;
}
});

示例:

这是怎么回事?看起来这是代码框中的-RegExp.quote=function(str){return(str+'').replace(/([.?*+^$[](){}}|-])/g,“\$1”);};这是javascript。它位于javascript的脚本标记中。通过输入框ID将其链接到输入框,该代码在哪里-
RegExp.quote=function(str){return(str++'').replace(/([.?*+^$[]\(){}}号-])/g,“\$1”);}开始?因为它在答案中的灰色框之外,这也进入了javascript。它应该是灰色的。我会修好的谢谢!终于找到了我要找的东西。。纯溶液
list_of_terms = {"term0","term1","term2",...};

$("#inputsearch").autocomplete({
    var term = request.term
    var list = new Array();
    source: function( request, response ) {
        var cnt = 0;
        $.each(list_of_terms, function(i) {
            var rSearchTerm = new RegExp('^' + RegExp.quote(term),'i');
            if (list_of_terms[i].match(rSearchTerm)) {                 
                list[cnt] = list_of_terms[i];
                cnt++;
            }
       });
     response(list);
    }
});



RegExp.quote = function(str) {
    return (str+'').replace(/([.?*+^$[\]\\(){}|-])/g, "\\$1");
};
$("#tags")
    .on("keydown", function (event) {
        if (event.keyCode === $.ui.keyCode.TAB && $(this).data("autocomplete").menu.active) {
            event.preventDefault();
        }
    })
    .autocomplete({
        minLength: 0,
        source: function (request, response) {
            var term = $.ui.autocomplete.escapeRegex(extractLast(request.term))
                // Create two regular expressions, one to find suggestions starting with the user's input:
                , startsWithMatcher = new RegExp("^" + term, "i")
                , startsWith = $.grep(source, function(value) {
                    return startsWithMatcher.test(value.label || value.value || value);
                })
                // ... And another to find suggestions that just contain the user's input:
                , containsMatcher = new RegExp(term, "i")
                , contains = $.grep(source, function (value) {
                    return $.inArray(value, startsWith) < 0 &&
                        containsMatcher.test(value.label || value.value || value);
                });            

            // Supply the widget with an array containing the suggestions that start with the user's input,
            // followed by those that just contain the user's input.
            response(startsWith.concat(contains));
        },
        focus: function () {
            return false;
        },
        select: function (event, ui) {
            var terms = split(this.value);
            terms.pop();
            terms.push(ui.item.value);
            terms.push("");
            this.value = terms.join(", ");
            return false;
        }
});