2015-09-13 1 views
1

Я использую автозаполнение jquery-ui для получения некоторых результатов с сервера. Я хочу отфильтровать результаты на стороне клиента на основе клиентской функции. Как мне это сделать?Как фильтровать результаты в автозаполнении перед отображением?

Вот псевдокод, что я хочу:

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); 
      } 
     }) 
     } 

Я знаю, что это не работает на нескольких уровнях - я не фактический срок пройти, и я также получаю ошибку синтаксиса - Неожиданный токен { на линии return data.filter(item) {. Я также посмотрел на ajaxSuccess, который, как представляется, используется в основном для оповещения пользователя об успешном завершении - я не знаю, можно ли его использовать для фильтрации данных и их возврата.

+0

в Jquery UI API вы можете найти: '$ ("#autocomplete") .autocomplete ({ источник: функция (запрос, ответ) { вар согласовани = новый RegExp ("^" + $ .ui.autocomplete. escapeRegex (request.term), «i»); ответ ($ .grep (теги, функция (элемент) { return matcher.test (item); })) } }); – Saar

ответ

0

Я использовал другое решение, пославшего достаточно данных на сервер для фильтрации на сервере:

$("#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); 
       } 
      }) 
}); 

Сервер затем отправляет обратно только действительные результаты, поэтому нет необходимости фильтрации на клиенте.

 Смежные вопросы

  • Нет связанных вопросов^_^