Как остановить автозаполнение jQuery от автосопровождения полного массива с несколькими значениями вариант

0

Используя параметр jQuery autocomplete multiple values, как я могу предотвратить автоматическое самоуправление для каждого нового слова.

Проблема в том, что он показывает весь массив, когда вы нажимаете "пробел", который замедляет (зависает) некоторые браузеры при использовании большого массива.

Увеличение значения .minLength работает для первого слова, но как только вы нажимаете пробел, он показывает весь массив.

Как я могу прекратить это делать.

http://plnkr.co/edit/ru7i5kuOWzZ7CYu5KNxr?p=preview

  <script>
      $(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"
        ];
        function split( val ) {
          return val.split( / \s*/ );
        }
        function extractLast( term ) {
          return split( term ).pop();
        }

        $( "#tags" )
          // don't navigate away from the field on tab when selecting an item
          .bind( "keydown", function( event ) {
            if ( event.keyCode === $.ui.keyCode.TAB &&
                $( this ).data( "ui-autocomplete" ).menu.active ) {
              event.preventDefault();
            }
          })
          .autocomplete({
            minLength: 3,
            source: function( request, response ) {
              // delegate back to autocomplete, but extract the last term
              response( $.ui.autocomplete.filter(
                availableTags, extractLast( request.term ) ) );
            },
            focus: function() {
              // prevent value inserted on focus
              return false;
            },
            select: function( event, ui ) {
              var terms = split( this.value );
              // remove the current input
              terms.pop();
              // add the selected item
              terms.push( ui.item.value );
              // add placeholder to get the comma-and-space at the end
              terms.push( "" );
              this.value = terms.join( ", " );
              return false;
            }
          });
      });
      </script>
Теги:
autocomplete

2 ответа

2
Лучший ответ

Вы можете проверить пустую строку в параметре запроса в методе источника автозаполнения, как показано ниже

 if(request.term===' ')
          {
            response([{value: "Enter Some text to search"}]);
            return false;
          }

Взгляните на этот рабочий образец jqfaq, который может помочь вам

0

добавьте этот litte if-statement в свою исходную функцию

      if (extractLast( request.term ).replace(/ /g, "") == "") {
        return false;
      }

вот и плункер.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню