Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.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 如何在显示前过滤自动完成中的结果?_Javascript_Arrays_Filtering_Jquery Ui Autocomplete - Fatal编程技术网

Javascript 如何在显示前过滤自动完成中的结果?

Javascript 如何在显示前过滤自动完成中的结果?,javascript,arrays,filtering,jquery-ui-autocomplete,Javascript,Arrays,Filtering,Jquery Ui Autocomplete,我正在使用jQueryUIAutoComplete从服务器检索一些结果。我想根据客户端函数在客户端过滤结果。我该怎么做 以下是我想要的伪代码: function is_valid_value(item) { // returns true if item is valid, false otherwise } $( "#some-text-field" ).autocomplete({ source: $.get('url/path/to/autocomplete.json?t

我正在使用jQueryUIAutoComplete从服务器检索一些结果。我想根据客户端函数在客户端过滤结果。我该怎么做

以下是我想要的伪代码:

function is_valid_value(item) {
  // returns true if item is valid, false otherwise
}

$( "#some-text-field" ).autocomplete({
      source: $.get('url/path/to/autocomplete.json?term=abc', function(data) {
          // item is an element in the data collection
          return data.filter(item) {
            return is_valid_value(item);
          }
        })
      }

我知道这在多个级别上都不起作用-我没有要传递的实际术语,而且我还得到一个语法错误-行
返回数据.filter(item)上出现意外标记
{
{
。我还研究了
ajaxSuccess
,它似乎主要用于提醒用户成功完成-我不知道它是否可以用于筛选数据并返回数据。

我使用了另一种解决方案,它向服务器发送了足够的数据,以便在服务器上进行筛选:

$("#some-text-field").autocomplete({
  source: function(request, response) {
            $.ajax({
              url: '/path/to/autocomplete',
              dataType: "json",
              data: {
                term: request.term,
                blocked: blocked_results(), //a function that returns the results to block 
               },
               success: function(data) {
                 response(data);
               }
           })
});

然后,服务器只发回有效的结果,因此不需要对客户端进行筛选。

我使用了另一种解决方案,该解决方案将足够的数据发送到服务器,以便在服务器上进行筛选:

$("#some-text-field").autocomplete({
  source: function(request, response) {
            $.ajax({
              url: '/path/to/autocomplete',
              dataType: "json",
              data: {
                term: request.term,
                blocked: blocked_results(), //a function that returns the results to block 
               },
               success: function(data) {
                 response(data);
               }
           })
});

然后,服务器只发回有效的结果,因此不需要对客户端进行过滤。

在jQueryUIAPI中可以找到:
$(“#autocomplete”).autocomplete({source:function(request,response){var matcher=newregexp(“^”+$.ui.autocomplete.escapeRegex(request.term),“i”);response($.grep(标记,函数(项){return matcher.test(项);}}}}}})
在jQueryUIAPI中可以找到:
$(“#自动完成”).autocomplete({source:function(request,response){var matcher=new RegExp(“^”+$.ui.autocomplete.escapeRegex(request.term),“i”);response($.grep(标记,函数(项){return matcher.test(项);});}});