我们在一个简单的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">
感谢。
答案 0 :(得分:13)
该错误通常意味着尚未加载jquery或插件。在加载文档之前检查您的函数调用是否未被命中:
$(function(){
var $searchBox = $('#mysearchBox');
$searchBox.autocomplete(...);
});
同时检查javascript文件的路径是否正确。 Firebug或Google Chrome开发人员工具可用于检查这两个问题。
答案 1 :(得分:9)
可能是:
答案 2 :(得分:3)
也许尝试使用jQuery.noConflict() method进行测试。它基本上只是让你为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';
答案 3 :(得分: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()我的结果是我的文档。通过这样做,我们几乎重新定义了改变或利用的所有var thatjquery-ui.min.js。
答案 4 :(得分:1)
这是由于与Sitefinity自己使用jQuery的冲突造成的。
如果在关闭表单标记之前将jQuery的脚本引用移动到页面底部。这将解决Sitefinity 4.0中的问题,但我怀疑它也将解决Sitefinity 3.7中的这个问题。