2011-12-29 6 views
5

Я хотел бы автозаполнять дисплей «нет результатов» в его падении список, если результат не найден.JQuery Autocomplete - нет результата сообщения

Моя ситуация похожа на пример по умолчанию JQuery.

$(function() { 
    var availableTags = [ 
     "ActionScript", 
     "AppleScript", 
     "Asp", 
     "BASIC", 
     "C", 
     "C++", 
     "Clojure", 
     "COBOL", 
     "ColdFusion", 
     "Erlang", 
     "Fortran", 
     "Groovy", 
     "Haskell", 
     "Java", 
     "JavaScript", 
     "Lisp", 
     "Perl", 
     "PHP", 
     "Python", 
     "Ruby", 
     "Scala", 
     "Scheme" 
     ]; 
    $("#tags").autocomplete({ 
     source: availableTags 
    }); 
}); 

Благодарим за помощь.

+0

возможно дубликат [не обнаружен, результаты на JQuery UI автозаполнения] (http://stackoverflow.com/questions/4718968/detecting-no-results-on-jquery-ui-autocomplete) –

+0

Фактически, это немного отличается от того, который я связывал как дубликат. Пожалуйста, не обращайте внимания на мой закрытый голос. –

ответ

10

Вот один из способов вы можете сделать это:

$(function() { 
    var availableTags = [ /* snip */]; 
    var NoResultsLabel = "No Results"; 

    $("#tags").autocomplete({ 
     source: function(request, response) { 
      var results = $.ui.autocomplete.filter(availableTags, request.term); 

      if (!results.length) { 
       results = [NoResultsLabel]; 
      } 

      response(results); 
     }, 
     select: function (event, ui) { 
      if (ui.item.label === NoResultsLabel) { 
       event.preventDefault(); 
      } 
     }, 
     focus: function (event, ui) { 
      if (ui.item.label === NoResultsLabel) { 
       event.preventDefault(); 
      } 
     } 
    }); 
}); 

В принципе, вы должны предоставить ссылку на функцию в качестве source к автозаполнения. Внутри этой функции вы можете использовать ту же функцию утилиты ($.ui.autocomplete.filter), чтобы отфильтровать результаты. Затем вы можете увидеть, пуст ли массив результатов. Если это так, вы можете добавить сообщение по умолчанию в список результатов.

Другие два варианта, которые я указал, предотвращают выбор 0 или .

Пример:http://jsfiddle.net/er6LF/

+0

Отлично! Спасибо, Андрей. Теперь я могу вернуться домой. – m14Grl

+0

@ m14Grl: Рад помочь! –

0

Эта скрипка имеет рабочий является функциональным примером для вас есть: http://jsfiddle.net/andrewodri/wAg4g/

Я изменил это:

$("#tags").autocomplete({source: availableTags}); 

Для этого:

$("#tags").autocomplete(availableTags); 

Вы можете видеть, что это runnin g в последней версии jQuery и подключен плагин в разделе «Управление ресурсами», взятый из: http://bassistance.de/jquery-plugins/jquery-plugin-autocomplete/.

Update: Код выше работает, если вам случится быть с помощью плагина ссылка ... Если нет, то это, кажется, работает как :) Пожалуйста, обратите внимание, что я сделал добавить код в $(document).ready();, которые могут иметь препятствует работе. См. Эту разветвленную скрипку: http://jsfiddle.net/andrewodri/VLKwe/

Надеюсь, что это поможет!

+0

BTW, дополнительную документацию по этому плагину можно найти здесь: http://docs.jquery.com/Plugins/Autocomplete –

+0

OP не использует этот плагин, он использует автозаполнение jQueryUI (http: //www.jqueryui. com/demos/autocomplete) –

+0

Ahh, мой плохой! Посмотрите на эту разветвленную скрипку: http://jsfiddle.net/andrewodri/VLKwe/. Сообщение обновлено :) –

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