15

我们已经在一个简单的 HTML 页面中测试了 Jquery UI (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">

谢谢。

4

5 回答 5

14

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

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

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

于 2011-03-02T14:45:52.260 回答
9

它可能是:

  1. jquery.js 的加载顺序。
  2. 重复的 jquery.js 包含在同一页面中。
于 2011-10-06T13:20:58.097 回答
3

也许尝试使用jQuery.noConflict() 方法进行测试。它基本上只是让你为 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';
于 2012-02-13T10:20:29.857 回答
2

我遇到了这个问题,发生的事情是我的 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。

于 2015-08-05T21:26:26.973 回答
1

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

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

于 2011-06-17T21:55:38.203 回答