jQuery-ui自动完成无法在母版页

时间:2016-10-17 21:41:40

标签: javascript jquery ajax jquery-ui autocomplete

我在母版页上苦苦寻求jQuery-UI Autocomplete 我按顺序加载了jQuery.js和jQuery-ui.js,在母版页的head部分。
我确实需要做的是非常普遍,但也许它在主页面上的想法正在阻碍。
以下<body>代码将填充自动填充输入(id = autocomplete),其中包含ajax调用之外的硬编码值。
我意识到为数据调用ajax并没有使用它是没用的,但我稍后会处理它......宝贝步骤

<%-- Trying some autocomplete stuff --%>
<label for="autocomplete" style="color:yellow;">Language: </label>
<input id="autocomplete" />

<script type="text/javascript">
    var wsUrl = '<%= ResolveUrl("http://localhost/CommonContent/CCWebService.asmx/HelloWorld") %>';
    var fillMe = "[id$='autocomplete']";
    $.ajax({
        type: "POST",
        url: wsUrl,
        contentType: "application/json; charset=utf-8",
        dataType: "text",
        success: function (dave) {
            alert(dave);
            //FillAutocomplete(fillMe);
       },
        error: function (jqXHR, textStatus, errorThrown) {
            alert("1!\n" + errorThrown + "\n" + jqXHR + "\n" + textStatus);
        }
    });
    FillAutocomplete(fillMe);
    function FillAutocomplete(id) {
        autodata = ["c++-001", "java-002", "php-003", "coldfusion-004", "javascript-005", "asp-006", "ruby-007"];
        alert(autodata);
        //$("[id$='autocomplete']").autocomplete({
        $(id).autocomplete({
                source: autodata,
            select: function (event, ui) {
                var label = ui.item.label.split('-')[0];
                alert(label);
                var value = ui.item.value.split('-')[1];
                alert(value);
                //store in session
                document.valueSelectedForAutocomplete = value
            }
        });
        alert("Filled");
    }
</script>

再次,这个工作(但数据是硬编码的)。我按以下顺序收到警报:ajax成功,然后是autodata,然后填写通知 此外,如果我将fillMe变量设置为“#autocomplete”,或者我在FillAutocomplete函数中对其进行硬编码,则它可以工作。
显然,由于它可以工作,输入可以具有自动完成属性。

以下是我试过的其他地方,我只是得到了 对象不支持属性或方法'autocomplete'

  1. 将自动填充代码直接放在成功
  2. 调用自动填充内容填写ajax调用成功(取消注释//FillAutocomplete)(注释另一个调用)
  3. $(function() { $('#autocomplete).autcomplete({...
  4. 开始
  5. 使用某种形式的<#='autocomplete.ClientID()'#>
  6. 我有一种潜在的怀疑,它没有找到控件,而不是控件没有支持它。

    有什么想法吗?

    更新:更多信息 我已经添加了下面的屏幕截图,以显示其完整荣耀中的错误。抱歉重复自己,但我想知道是否是由于母版页以某种方式,或者某种方式jquery-ui没有在调用自动​​完成方法之前加载(因为它是“对象不支持....”)< / p>

    enter image description here

    原因和解决方案:

    似乎Ajax调用试图在加载远程文件jQuery-UI之前完成。正如下面的评论中建议的 RAM ,我下载了所有远程文件,现在它们已成为项目的一部分。现在脚本以正确的顺序加载,并且输入上有自动完成方法。谢谢 RAM

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

Ajax调用试图在加载远程文件jQuery-UI之前完成。在评论中建议 RAM ,我下载了所有远程文件,它们是项目的一部分。现在脚本以正确的顺序加载,并且输入上有自动完成方法。

感谢 RAM - 这样做了。