Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Autocomplete函数只在openscript标记中工作,而不在ajax.done函数中的同一标记中工作_Javascript_Jquery_Ajax_Autocomplete - Fatal编程技术网

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,但这里有一些链接: