Javascript Autocomplete函数只在openscript标记中工作,而不在ajax.done函数中的同一标记中工作
代码如下:Javascript Autocomplete函数只在openscript标记中工作,而不在ajax.done函数中的同一标记中工作,javascript,jquery,ajax,autocomplete,Javascript,Jquery,Ajax,Autocomplete,代码如下: var components = new Array(); $("#types").change(function() { $.ajax({ method: "GET", url: "/index.php/field/get-fields-by-type/" + $("#types").val(), dataType: "json" }).done(function( data
var components = new Array();
$("#types").change(function() {
$.ajax({
method: "GET",
url: "/index.php/field/get-fields-by-type/" + $("#types").val(),
dataType: "json"
}).done(function( data ) {
for (var i = 0, len = data.length; i < len; i++) {
var dat = data[i];
components.push({ value: dat.name, data: dat.id });
}
//HERE I GET: TypeError: $(...).autocomplete is not a function
$('#productfield-field_id').autocomplete({
lookup: components,
onSelect: function (suggestion) {
alert('You selected: ' + suggestion.value + ', ' + suggestion.data);
$("#productfield-field_id").val(suggestion.data);
}
});
});
});
// BUT HERE it works like charm and does the functionality which it should be doing
$('#productfield-field_id').autocomplete({
lookup: components,
onSelect: function (suggestion) {
alert('You selected: ' + suggestion.value + ', ' + suggestion.data);
$("#productfield-field_id").val(suggestion.data);
}
});
var组件=新数组();
$(“#类型”).change(函数(){
$.ajax({
方法:“获取”,
url:“/index.php/field/get fields by type/”+$(“#types”).val(),
数据类型:“json”
}).完成(功能(数据){
对于(变量i=0,len=data.length;i
我想知道原因。为什么我会在$.ajax.done函数中收到关于autocomplete的TypeError消息,但当它只是在script tag plain open中时,它就可以正常工作,并且不会出错。如何解决这个问题,以便将这些组件添加到查找中
到目前为止,我已经调试过了,我可以看出组件具有正确格式的值,jQuery选择#productfield-field_id也是有效的,并且可以找到它。例如,尝试给它增加价值,它成功了
我正在使用此自动完成:
我还尝试用“devbridgeAutocomplete”替换autocomplete,结果是一样的。在open中工作,但在ajax.done函数中不工作
我还尝试了另一种解决方案,将普通的开放代码放入单独的javascript函数中,该函数以数组为参数,并尝试在其中调用自动完成函数。但我也会有打字错误
网页中还包括jQuery和自动完成功能
我尝试过的浏览器:Firefox和Chrome因为在“完成”功能中,您不在无法访问“自动完成”功能的全局范围内。您可以建议一些替代解决方案,如何将该集合设置为“查找”属性,或者如何使其可访问?您可以制作js fiddle示例,我无法确定您是否可以使用它。因为我第一次听说js fiddle,但这里有一些链接: