Skip to main content
 首页 » 编程设计

jquery:类型错误:this.source 不是函数

2026年05月17日41lyj

我正在尝试将 Jquery 自动完成功能集成到我的应用程序中。所需的js文件如下:

<script type="text/javascript" src="${pageContext.request.contextPath}/scripts/jquery-1.8.3.js"></script> 
<script type="text/javascript" src="${pageContext.request.contextPath}/scripts/jquery.ui.core.min.js"></script> 
<script type="text/javascript" src="${pageContext.request.contextPath}/scripts/jquery.ui.widget.min.js"></script> 
<script type="text/javascript" src="${pageContext.request.contextPath}/scripts/jquery.ui.autocomplete.min.js"></script> 
<script type="text/javascript" src="${pageContext.request.contextPath}/scripts/jquery-ui.min.js"></script> 
<script type="text/javascript" src="${pageContext.request.contextPath}/scripts/script.js"></script> 

“scripts.js”文件是包含以下代码的应用程序特定文件:

$(document).ready(function() { 
    $('#aisleFrom').autocomplete({ 
        url: '/StoreMapperApp/MapPickingZone.action?autocomplete=', 
        minChars: 0, 
        max: 10, 
        width: 150, 
        scroll: true, 
        cacheLength: 0 
    }).focus(function() { 
        $(this).autocomplete('search', $(this).val()) 
    }); 
}); 

但是,当我尝试在具有 id 'aisleFrom' 的文本字段中输入任何内容时,我在 jquery-ui.min.js 文件中收到如下错误:

类型错误:this.source 不是函数 ...完成加载"),this.cancelSearch=!1,this.source({term:e},this._response())},...

有人可以建议一下吗?

请您参考如下方法:

尝试将 url 更改为 source 。请参阅Autocomplete Widget source

<小时 />
  jQuery(document).ready(function() {          
    $("#aisleFrom").autocomplete({ 
        minLength: 0, 
        // substitute `source` for `url` 
        source: function(request, response) { 
          var term = request.term; 
          // get json  
          $.getJSON(/* /path/to/json/ */) 
          .then(function success(data) { 
            // filter results 
            var res = $.grep(data, function(val) { 
              return new RegExp($.ui.autocomplete.escapeRegex(term), "gi") 
                     .test(val.toLowerCase()) 
            }) 
            , key = $.inArray(term.toUpperCase(), res) 
            , results = term.length === 1  
                          & key !== -1  
                          ? Array(res[key])  
                          : res; 
            response(results) 
          }, function error(jqxhr, textStatus, errorThrown) { 
               console.log(textStatus, errorThrown) // log `$.ajax` errors 
        }) 
      } 
    }).focus(function() { 
          $(this).autocomplete("search", $(this).val()) 
    });           
  }); 

jQuery(document).ready(function() { 
 
  $("#tags").autocomplete({ 
    minLength: 0, 
    source: function(request, response) { 
      var term = request.term; 
      $.getJSON("https://gist.githubusercontent.com/anonymous/86f61fee217838ba6c3c/raw/395a557fa400163f048f30370d782db554913b2b/availableTags.json") 
        .then(function success(data) { 
          var res = $.grep(data, function(val) { 
            return new RegExp($.ui.autocomplete.escapeRegex(term), "gi") 
              .test(val.toLowerCase()) 
          }) 
          , key = $.inArray(term.toUpperCase(), res) 
          , results = term.length === 1  
                        && key !== -1  
                        ? Array(res[key])  
                        : res; 
          response(results) 
        }, function error(jqxhr, textStatus, errorThrown) { 
             console.log(textStatus, errorThrown) // log `$.ajax` errors 
      }) 
    } 
  }).focus(function() { 
      $(this).autocomplete("search", $(this).val()) 
  }); 
   
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
<script src="https://code.jquery.com/ui/jquery-ui-git.js"></script> 
<div class="ui-widget"> 
  <label for="tags">Tags:</label> 
  <input id="tags"> 
</div>