Javascript “自动完成”;不是一个函数;

Javascript “自动完成”;不是一个函数;,javascript,jquery,asp.net,jquery-ui,sitefinity,Javascript,Jquery,Asp.net,Jquery Ui,Sitefinity,我们已经在一个简单的HTML页面中测试了jQueryUI(Jquery-UI-1.8.10.custom.min.js)自动完成功能,该功能可以正常工作 然后,我们将相同的代码复制到Asp.net用户控件中,它将停止工作。Javascript错误显示“$searchBox.autocomplete不是函数” 此用户控件正在Asp.net Sitefinity 3.7项目中使用。页面上有一个ScriptManager。不知道我还能补充什么 有人知道发生了什么吗 安曼德: <script sr

我们已经在一个简单的HTML页面中测试了jQueryUI(Jquery-UI-1.8.10.custom.min.js)自动完成功能,该功能可以正常工作

然后,我们将相同的代码复制到Asp.net用户控件中,它将停止工作。Javascript错误显示“$searchBox.autocomplete不是函数”

此用户控件正在Asp.net Sitefinity 3.7项目中使用。页面上有一个ScriptManager。不知道我还能补充什么

有人知道发生了什么吗

安曼德:

<script src="/js/jquery-1.5.min.js" type="text/javascript"></script>
<script src="/js/jquery-ui-1.8.10.custom.min.js" type="text/javascript"></script>
<script type="text/javascript">
    $(document).ready(function () {
        var termTemplate = "<span class='ui-autocomplete-term'>%s</span>";

        $('input#searchInput').autocomplete({
            source: ['johannesburg z', 'johannesburg x', 'johannesburg v', 'johannesburg b', 'johannesburg a', 'johannesburg q', 'johannesburg u', 'johannesburg y', 'johannesburg o', 'johannesburg p'],
            minLength: 3,
            open: function (e, ui) {

                var 
                acData = $(this).data('autocomplete'),
                styledTerm = termTemplate.replace('%s', acData.term);

                acData
                .menu
                .element
                .find('a')
                .each(function () {
                    var me = $(this);
                    me.html(me.text().replace(acData.term, styledTerm));
                });

            }
        });
    });
</script>
<div class="outerSearchBox">
    <div class="searchFieldWrapper">
        <input id="searchInput" type="text" class="searchField" /><a class="searchButton">SEARCH
        </a>
        <div class="searchSugContainer">

$(文档).ready(函数(){
var termTemplate=“%s”;
$('input#searchInput')。自动完成({
资料来源:[“约翰内斯堡z”、“约翰内斯堡x”、“约翰内斯堡v”、“约翰内斯堡b”、“约翰内斯堡a”、“约翰内斯堡q”、“约翰内斯堡u”、“约翰内斯堡y”、“约翰内斯堡o”、“约翰内斯堡p”],
最小长度:3,
打开:功能(e、ui){
变量
acData=$(this).data('autocomplete'),
styledTerm=termTemplate.replace(“%s”,acData.term);
acData
.菜单
.元素
.find('a'))
.每个(功能){
var me=$(此);
html(me.text().replace(acData.term,styledTerm));
});
}
});
});
搜寻

谢谢。

该错误通常意味着jquery或插件尚未加载。在加载文档之前,检查您的函数调用是否未被命中:

$(function(){
    var $searchBox = $('#mysearchBox');
    $searchBox.autocomplete(...);
});

还要检查javascript文件的路径是否正确。或者google chrome开发者工具对检查这两个问题都很有用。

这是由于与Sitefinity自己使用jQuery的冲突造成的

如果将jQuery的脚本引用移动到页面底部的结束表单标记之前。这将解决Sitefinity 4.0中的问题,但我怀疑它也会解决Sitefinity 3.7中的问题。

可能是:

  • jquery.js加载的顺序
  • 同一页面中包含重复的jquery.js
  • 也许可以试着用它来做个测试。它基本上只是让您为jQuery使用不同的别名。这在SF4.3中对我有效

    var j = jQuery.noConflict();
    // Do something with jQuery
    j("div p").hide();
    // Do something with another library's $()
    $("content").style.display = 'none';
    

    我遇到了这个问题,我的jQuery文件加载了两次。这几乎是我脑海中的想法:

    <script src="assets/js/jquery.min.js"></script>
    <script src="js_css/jquery-ui.min.js" ></script>
    
    
    
    然后我有一个AJAX调用,加载了我文档的更多部分,还有一个:

    <script src="assets/js/jquery.min.js"></script>
    
    
    

    脚本标记在我的AJAX结果中,我将$.hmtl()我的结果添加到我的文档中。通过这样做,我们几乎重新定义了jquery-ui.min.js修改或利用的所有var

    我已经与Firebug确认文件正在下载,并且顺序正确。JQuery,jqueryui,然后我使用自动完成。你可能会重新审视这个问题吗?我找到了答案。我加载了两次jQuery库。在创建一个新的.Net核心应用程序时,我收到了相同的消息,我在_Layout.cshtml文件的顶部添加了Jquery/JQueryUI引用,但结果表明,在呈现页面正文后,默认情况下,Jquery库被添加到页面的底部。我评论了这一点,效果很好