Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.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 - Fatal编程技术网

Javascript jquery autocomplete正在呈现未筛选的数据

Javascript jquery autocomplete正在呈现未筛选的数据,javascript,jquery,Javascript,Jquery,我正在使用jqueryautocomplete进行自动建议。“建议”下拉列表显示的是整个列表,而不是筛选列表 小提琴- HTML <input type='text' /> 在我的搜索过程中,我看到过类似的代码在工作,但我不知道为什么这不起作用 如果希望结果按字母顺序排序,则需要对对象进行排序。“自动完成”不会为您这样做 例如 “建议”下拉列表显示的是整个列表,而不是已排序的列表 这里需要的不是排序,而是过滤 在source函数中,需要从json中筛选要使用的值。您也可以在这里进

我正在使用jqueryautocomplete进行自动建议。“建议”下拉列表显示的是整个列表,而不是筛选列表

小提琴-

HTML

<input type='text' />

在我的搜索过程中,我看到过类似的代码在工作,但我不知道为什么这不起作用

如果希望结果按字母顺序排序,则需要对对象进行排序。“自动完成”不会为您这样做

例如

“建议”下拉列表显示的是整个列表,而不是已排序的列表

这里需要的不是排序,而是过滤

source
函数中,需要从
json
中筛选要使用的值。您也可以在这里进行排序、映射等。差不多

response(
  json.filter(
    function (jsonItem) {
      let sanitizedInput = $.ui.autocomplete.escapeRegex(request.term);
      return jsonItem.full_name.match(sanitizedInput);
    }
  )
  .map(/* transform to {id, value} or else in here if need be */)
  .sort(/* sort data in here if need be */)
)

这使用和。如果还需要排序,请检查的答案给出的提示。将函数传递给它时进行检查以获取完整信息。

感谢您的排序,它现在正在工作。但为什么autocomplete没有自动过滤呢?
function compare(a,b) {
  if (a.full_name.toLowerCase() < b.full_name.toLowerCase())
    return -1;
  if (a.full_name.toLowerCase() > b.full_name.toLowerCase())
    return 1;
  return 0;
}

json.sort(compare);
var json = [{"full_name": "joye dave", "username": "jd"}, {"full_name": "rob", "username": "r"}, {"full_name": "jhon key", "username": "jk"}, {"full_name": "alpacino", "username": "ap"}, {"full_name": "Julia", "username": "Julia"}];

var transformJson = function(json) {
  return $.map(json, function(i) {
    return {
      value: i.full_name,
      id: i.username,
    }
  });
}

function compare(a,b) {
  if (a.full_name.toLowerCase() < b.full_name.toLowerCase())
    return -1;
  if (a.full_name.toLowerCase() > b.full_name.toLowerCase())
    return 1;
  return 0;
}

json.sort(compare);

$( "input" ).autocomplete({
  source: function( request, response ) {
    var matcher = new RegExp( "^" + $.ui.autocomplete.escapeRegex( request.term ), "i" );
    response( 
      $.grep( 
        transformJson(json), 
        function( item ){
          found = matcher.test( item.value );
          return found;
        }
      ) 
    );
  }
});
response(
  json.filter(
    function (jsonItem) {
      let sanitizedInput = $.ui.autocomplete.escapeRegex(request.term);
      return jsonItem.full_name.match(sanitizedInput);
    }
  )
  .map(/* transform to {id, value} or else in here if need be */)
  .sort(/* sort data in here if need be */)
)