Javascript 未捕获类型错误:无法读取属性';自动完成';未定义的

Javascript 未捕获类型错误:无法读取属性';自动完成';未定义的,javascript,jquery,autocomplete,monkeypatching,Javascript,Jquery,Autocomplete,Monkeypatching,很长一段时间以来,我一直在为我们的主页输入框使用自动完成逻辑&它工作得很好,但今天它突然不工作了&在这行代码上显示错误 jQuery.ui.autocomplete.prototype._renderItem = function( ul, item) { 错误:未捕获类型错误:无法读取未定义的属性“自动完成” 这个自动完成逻辑的完整代码是 <script type="text/javascript"> function monkeyPatchAutocomplete() {

很长一段时间以来,我一直在为我们的主页输入框使用自动完成逻辑&它工作得很好,但今天它突然不工作了&在这行代码上显示错误

jQuery.ui.autocomplete.prototype._renderItem = function( ul, item) {
错误:未捕获类型错误:无法读取未定义的属性“自动完成”

这个自动完成逻辑的完整代码是

<script type="text/javascript">

function monkeyPatchAutocomplete() {

jQuery.ui.autocomplete.prototype._renderItem = function( ul, item) {
    var re = new RegExp("(?![^&;]+;)(?!<[^<>]*)(" + this.term + ")(?![^<>]*>)(?![^&;]+;)", "gi");
    var t = item.label.replace(re,"<span style='font-weight:bold;color:#434343;'>" + 
            "$&" + 
            "</span>");
    return jQuery( "<li></li>" )
        .data( "item.autocomplete", item )
        .append( "<a>" + t + "</a>" )
        .appendTo( ul );
};
}

function getKeywords(){

    var allKeywords = <?php echo json_encode($allKeywords); ?>;

    return allKeywords;
}

var URL = '<?php e(SITE_URL); ?>fronts/search';

jQuery(document).ready(function(){

monkeyPatchAutocomplete();

var username = jQuery('#username');

username.autocomplete({
minLength    : 1,
source        : URL
});

var CityKeyword = jQuery('#CityKeyword');

CityKeyword.autocomplete({
minLength    : 1,
source        : getKeywords()
});

});

// A custom jQuery method for placeholder text:

jQuery.fn.defaultText = function(value){

var element = this.eq(0);
element.data('defaultText',value);

element.focus(function(){
if(element.val() == value){
element.val('').removeClass('defaultText');
}
}).blur(function(){
if(element.val() == '' || element.val() == value){
    element.addClass('defaultText').val(value);
}
});

return element.blur();
}
</script>

函数monkeyPatchAutocomplete(){
jQuery.ui.autocomplete.prototype.\u renderItem=function(ul,item){
var re=new RegExp((?![^&;]+;)(?!)(?![^&;]+;),“gi”);
var t=项目.标签.替换(重“”+
"$&" + 
"");
返回jQuery(“
  • ”) .data(“item.autocomplete”,item) .append(“+t+”) .附录(ul); }; } 函数getKeywords(){ var-allKeywords=; 返回所有关键字; } var URL='前沿/搜索'; jQuery(文档).ready(函数(){ monkeyPatchAutocomplete(); var username=jQuery('#username'); username.autocomplete({ 最小长度:1, 来源:URL }); var CityKeyword=jQuery(“#CityKeyword”); CityKeyword.autocomplete({ 最小长度:1, 来源:getKeywords() }); }); //占位符文本的自定义jQuery方法: jQuery.fn.defaultText=函数(值){ var元素=该等式(0); 元素数据('defaultText',值); 元素。焦点(函数(){ if(element.val()==值){ element.val(“”).removeClass('defaultText'); } }).blur(函数(){ if(element.val()=''| element.val()==值){ 元素.addClass('defaultText').val(值); } }); 返回元素blur(); }

    请分享可能导致此问题的原因。

    我假设没有名为“username”的元素或没有名为“CityKeyword”的元素。加载jQuery UI时可能会出错,因为
    jQuery.UI
    返回
    未定义的
    否@AndureAnderson“username”和“CityKeyword”被分配给输入框的id名称