Javascript 如何在之后初始化:错误:无法在初始化之前对自动完成调用方法

Javascript 如何在之后初始化:错误:无法在初始化之前对自动完成调用方法,javascript,jquery,jquery-ui,autocomplete,Javascript,Jquery,Jquery Ui,Autocomplete,我以前有一个旧的自动完成脚本,在输入表单上运行一个旧的jQuery。我想将markItUp添加到我的文本输入表单中,而我使用的自动完成版本不再适用于较新的jQuery 我看到jquery-ui.js中提供了最新的autocomplete,但在安装之后,我开始收到以下警告: 错误:无法在初始化之前对自动完成调用方法; 试图调用方法“/include/suggest.php” 我查找初始化并在$document.readyfunction之后添加了以下内容: 相同的错误消息。因此,我尝试使其更具体地

我以前有一个旧的自动完成脚本,在输入表单上运行一个旧的jQuery。我想将markItUp添加到我的文本输入表单中,而我使用的自动完成版本不再适用于较新的jQuery

我看到jquery-ui.js中提供了最新的autocomplete,但在安装之后,我开始收到以下警告:

错误:无法在初始化之前对自动完成调用方法; 试图调用方法“/include/suggest.php”

我查找初始化并在$document.readyfunction之后添加了以下内容:

相同的错误消息。因此,我尝试使其更具体地用于正在自动完成的输入字段:

$(this.target).find("input[id^='last_']").autocomplete();
我在这里有点盲目。这个页面的自动完成功能是由我无法访问的人完成的,我自己也从未真正编写过jQuery功能。我试图理解这一点,但现在,我被难住了

以下是该页面的框架:

<script src="/jquery/1.9.1/jquery.min.js"></script>
<link rel="stylesheet" href="/inc/auto/main.css" type="text/css" />
<link rel="stylesheet" href="ui/1.11.4/themes/smoothness/jquery-ui.css">
<script src="/js/markitup/jquery.markitup.js"></script>
<script src="/js/markitup/sets/default/set.js"></script>

    [markitup styles]

<script>
  function html_entity_decode(str)
  {
    var ta=document.createElement("textarea");
    ta.innerHTML=str.replace(/</g,"&lt;").replace(/>/g,"&gt;");
    return ta.value;
  }
    $(document).ready(function() {
  $("#markItUp").markItUp(mySettings);

    $(this.target).find('input').autocomplete();
    $("input[id^='last_']").autocomplete('/include/suggest.php',{
            matchCase:true,
            formatItem: function(data, i, total)
            {
                var s=data[0].split(",")
                return s.join(" "); 
            }
    });

    $("input[id^='last_']").result(function(event, data, formatted){

        var ids=this.id.split('_')
        var id=ids[1]; // from last_xx got xxx

        var s=html_entity_decode(data[0]).split(",");

        $(this).next().focus();
        $(this).next().select();

        //have only last value -- TAB pressed
        if(s.length==1)return;

        $('#first_'+id).val(s[0]);
        $('#middle_'+id).val(s[1]);
        $('#last_'+id).val(s[2]);
    });

       });
</script>
</head>
<body>
<h1>News Inserter</h1>
<form action="/forms/cronkite.shtml"  accept-charset="UTF-8" method="POST">

Reporter (Last, First Middle):<br />
<input type="text" id="last_1" name="lastreporters" size="15" maxlength="30" value="" />, <input type="text" id="first_1"     name="firstreporters" size="15" maxlength="30" value="" /><input type="text" id="middle_1" name="middlereporters" size="15" maxlength="30" value="" /><br />
Story:<br />
[markitup text area]
<input type="SUBMIT" value="Insert Data" /><input type="RESET" value="Reset" /><br />
</form>

问题是否仅存在于我的初始化调用中?另外一点:我使用的autocomplete版本是autocomplete-jQuery插件1.1pre Copyright 2007。jQuery ui版本的autocomplete是否发生了足够大的变化,以至于我需要更新我的表单?

在深入阅读教程之后,我发现jQuery ui已经发生了很大的变化。去看教程吧

由于Jquery的旧版本,我也遇到了同样的问题,然后我添加了Js,现在一切正常

<script src="/jquery/1.9.1/jquery.min.js"></script>
<link rel="stylesheet" href="/inc/auto/main.css" type="text/css" />
<link rel="stylesheet" href="ui/1.11.4/themes/smoothness/jquery-ui.css">
<script src="/js/markitup/jquery.markitup.js"></script>
<script src="/js/markitup/sets/default/set.js"></script>

    [markitup styles]

<script>
  function html_entity_decode(str)
  {
    var ta=document.createElement("textarea");
    ta.innerHTML=str.replace(/</g,"&lt;").replace(/>/g,"&gt;");
    return ta.value;
  }
    $(document).ready(function() {
  $("#markItUp").markItUp(mySettings);

    $(this.target).find('input').autocomplete();
    $("input[id^='last_']").autocomplete('/include/suggest.php',{
            matchCase:true,
            formatItem: function(data, i, total)
            {
                var s=data[0].split(",")
                return s.join(" "); 
            }
    });

    $("input[id^='last_']").result(function(event, data, formatted){

        var ids=this.id.split('_')
        var id=ids[1]; // from last_xx got xxx

        var s=html_entity_decode(data[0]).split(",");

        $(this).next().focus();
        $(this).next().select();

        //have only last value -- TAB pressed
        if(s.length==1)return;

        $('#first_'+id).val(s[0]);
        $('#middle_'+id).val(s[1]);
        $('#last_'+id).val(s[2]);
    });

       });
</script>
</head>
<body>
<h1>News Inserter</h1>
<form action="/forms/cronkite.shtml"  accept-charset="UTF-8" method="POST">

Reporter (Last, First Middle):<br />
<input type="text" id="last_1" name="lastreporters" size="15" maxlength="30" value="" />, <input type="text" id="first_1"     name="firstreporters" size="15" maxlength="30" value="" /><input type="text" id="middle_1" name="middlereporters" size="15" maxlength="30" value="" /><br />
Story:<br />
[markitup text area]
<input type="SUBMIT" value="Insert Data" /><input type="RESET" value="Reset" /><br />
</form>