Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用jquery autocomplete从简单数组自动完成从一开始的精确匹配_Javascript_Jquery_Arrays_Autocomplete - Fatal编程技术网

Javascript 使用jquery autocomplete从简单数组自动完成从一开始的精确匹配

Javascript 使用jquery autocomplete从简单数组自动完成从一开始的精确匹配,javascript,jquery,arrays,autocomplete,Javascript,Jquery,Arrays,Autocomplete,如何使用jquery autocomplete和来自简单数组的输入启用从字符串开始的精确匹配 如果阵列中包含以下内容: 聪明的 过分聪明 斯马特兰 欠聪明 维里斯马特 如果我在文本输入中键入“sma…”,则必须仅显示smart和smartland,而不是其他。您可以使用正则表达式将输入的子字符串与数组中的值匹配。您只需要将源参数作为一个函数进行修改,以满足您的需要。像这样: 更新:向答案添加代码: var acList = ['smart', 'oversmart', 'smartlan

如何使用jquery autocomplete和来自简单数组的输入启用从字符串开始的精确匹配

如果阵列中包含以下内容:

  • 聪明的
  • 过分聪明
  • 斯马特兰
  • 欠聪明
  • 维里斯马特

如果我在文本输入中键入“sma…”,则必须仅显示smart和smartland,而不是其他。

您可以使用正则表达式将输入的子字符串与数组中的值匹配。

您只需要将源参数作为一个函数进行修改,以满足您的需要。像这样:


更新:向答案添加代码:

var acList = ['smart', 'oversmart', 'smartland', 'undersmart', 'verysmart'];
$('#ac').autocomplete({
    source: function (request, response) {
        var matches = $.map(acList, function (acItem) {
            if (acItem.toUpperCase().indexOf(request.term.toUpperCase()) === 0) {
                return acItem;
            }
        });
        response(matches);
    }
});

JQuery有太多的插件。只需在上面撒一点正则表达式,然后写下类似的内容(我没有测试它,但我以前也做过类似的事情):


您可以删除
新RegEx
参数中的
'^'+
,以恢复您描述为有问题的行为<代码>“^”表示行/字符串选择的开始,因此除非在开始处,否则“s”将不匹配。

自上一个答案被接受以来,这已发生变化。现在有了一个
lookupFilter
选项来执行此操作,而且更简单。从中,只需将其添加到选项列表中:

lookupFilter: function (suggestion, originalQuery, queryLowerCase) {
                return suggestion.value.toLowerCase().indexOf(queryLowerCase) === 0;
            },

实现这一点的方法记录在


var标签=[“c++”、“java”、“php”、“coldfusion”、“javascript”、“asp”、“ruby”];
$(“#自动完成”)。自动完成({
来源:功能(请求、响应){
var matcher=newregexp(“^”+$.ui.autocomplete.escapeRegex(request.term),“i”);
响应($.grep(标记、函数(项)){
返回匹配器测试(项目);
}) );
}
});

Erik的可能复制品-谢谢你,我会记住这一点,并调整它,看看它如何适合autcomplete…这似乎是针对不同的插件的。我想知道这是否是最有效的方法。我不知道。
lookupFilter: function (suggestion, originalQuery, queryLowerCase) {
                return suggestion.value.toLowerCase().indexOf(queryLowerCase) === 0;
            },
<script>
    var tags = [ "c++", "java", "php", "coldfusion", "javascript", "asp", "ruby" ];
    $( "#autocomplete" ).autocomplete({
      source: function( request, response ) {
              var matcher = new RegExp( "^" + $.ui.autocomplete.escapeRegex( request.term ), "i" );
              response( $.grep( tags, function( item ){
                  return matcher.test( item );
              }) );
          }
    });
</script>