jai*_*ump 5 javascript jquery jquery-ui autocomplete jquery-autocomplete
我尝试在文本字段上使用 jquery 自动完成功能,以允许用户选择多个标签,如本例所示,但出现错误Uncaught TypeError: Cannot read property 'autocomplete' of undefined。这是导致问题的代码,大部分是从链接复制的。
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.9/jquery-ui.min.js"></script>
<script type="text/javascript">
var tags = [<?php
foreach($this->tags as $tag){
echo "\"{$tag['name']}\",";
}
?>""];
$( "textarea:[name='tags']" ).autocomplete({
minLength: 0,
source: function( request, response ) {
// delegate back to autocomplete, but extract the last term
alert($.ui);
$.noConflict();
alert($.ui);
response( $.ui.autocomplete.filter(
tags, 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;
}
});
Run Code Online (Sandbox Code Playgroud)
该错误来自response( $.ui.autocomplete.filter(源内部的行。由于某种原因,$( "textarea:[name='tags']" ).autocomplete它是完全正确和定义的,但 $.ui.autocomplete 不是。
我在这个脚本上方包含了 jQuery 和 jQuery UI。可能是什么原因造成的?
编辑:
我注意到,如果我将其放在alert($.ui);自动完成功能之外,则会显示[Object object],但如果我将相同的警报放在自动完成的源属性内,则它是未定义的。对 $ 执行同样的操作,显示 $ 已在内部定义,但 $.ui 未定义。我的页面上还有一个日期选择器,它显示相同的内容,$.ui 未在插件内定义。为什么 jQuery UI 在这些插件中未定义?
编辑2:
将$.noConflict()源属性放在响应函数的正上方,使其工作时间足以让我输入一个标签,然后它会使自动完成功能崩溃,尽管日期选择器仍然可以工作。我尝试将它放入 create 函数中,这样它只会执行一次,但这只会禁用页面上的所有其他 jQuery。
我对 jQuery 或 Javascript 不太有经验,但 jQuery UI 插件似乎正在删除别名。