Автозаполнение пользовательского интерфейса jQuery: возвращает «ничего не найдено», если не найдено ни одного совпадения. - PullRequest
4 голосов
/ 20 января 2011

Кодер новичка здесь. У меня есть панель поиска с автозаполнением jQuery, поиск по локальному массиву json. Если совпадений не найдено, я хочу вернуть строку с надписью «Ничего не найдено».

Я пробовал использовать операторы внутри $ .grep, но пока ничего не получалось:

$("#div_name").autocomplete({
  appendTo: ".custom-autocomplete",
  source: function (request, response) {
  var matcher = new RegExp($.ui.autocomplete.escapeRegex(request.term), "i");
  response($.grep(array, function(value) {

  var not_found = 'Nothing found.';

     if (matcher.test(value.value).length && matcher.test(value.nickname).length == 0) {
       return not_found;
     }
     else {
    return matcher.test(value.value)
       || matcher.test(value.nickname);
  }

  }));
},

Спасибо за вашу помощь !! :)

Ответы [ 2 ]

0 голосов
/ 28 ноября 2011

Я думаю, что вы хотите проверить «ИЛИ» (||) здесь:

if (matcher.test(value.value).length && matcher.test(value.nickname).length == 0) {
   return not_found;
 }

будет иметь значение true, только если оба значения value.value И value.nickname не имеют значения. (Вы не показали свои данные, поэтому я думаю, здесь)

 if (matcher.test(value.value).length || matcher.test(value.nickname).length == 0) {
   return not_found;
 }

будет соответствовать, если один из них не соответствует истине, немедленно выручает, если value.value имеет длину.

0 голосов
/ 28 апреля 2011

Вы можете использовать _renderItem для отображения результатов, как вы хотите. Вам просто нужно проверить здесь, если результаты пусты, и сделать желаемый возврат.

$("#div_name").autocomplete({
    ...
}).data("autocomplete")._renderItem = function( ul, item ) {
    return "how and where you want to render results";
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...