如何阻止jQuery自动完成从自动建议完整的数组在多个值选项

How to stop jQuery autocomplete from autosuggesting the full array in multiple values option

本文关键字:数组 选项 jQuery 何阻止      更新时间:2023-09-26

使用jQuery自动补全多值选项,如何防止每个新词自动提示

问题是,当你按下"空格"时,它会显示整个数组,当使用大数组时,这会减慢(挂起)一些浏览器。

增加.minLength的值对第一个单词有效,但是一旦你按空格键,它就会显示整个数组。

我该如何阻止它这样做呢?

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

预览
  <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>

您可以像下面这样在自动完成源方法中检查请求参数中的空字符串

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

看一下这个jqfaq工作示例,它可能会对您有所帮助

将这个if语句添加到您的源函数

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

这里有一个活塞