我在主ASP MVC 3布局页面上得到了这个和其他几个奇怪的错误消息。
我正在使用以下脚本
<script src="@Url.Content("~/Scripts/modernizr-1.7.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery-1.8.3.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery-ui.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/typeahead.js")" type="text/javascript"></script>
尝试让typeahead.js在我们的导航栏中运行。下面是我目前在我的机器上的代码。我曾经在一个时间点工作,但是在与同事同步后,先前搜索不再起作用,我无法追踪问题。
以下代码中的第一行会出现以下错误
Uncaught TypeError: Cannot read property 'Constructor' of undefined
但是,如果我注释掉protoype.blur
函数,则会出现此错误
Uncaught TypeError: Object [object Object] has no method 'typeahead'
哪个指向$('.AgentSearch .typeahead).typeahead
功能。被困在这几个小时,任何帮助将不胜感激。感谢
// Workaround for bug in mouse item selection
$.fn.typeahead.Constructor.prototype.blur = function () {
var that = this;
setTimeout(function () { that.hide() }, 250);
};
$('.AgentSearch').typeahead({
source: function (term, process) {
var url = '@Url.Action("GetAgents", "Agent")';
var agents = [];
map = {};
return ($.getJSON(url, { term: term }, function (data) {
$.each(data, function (i, item) {
map[item.Name] = item;
agents.push(item.Name);
});
process(agents);
}));
},
highlighter: function (item) {
var p = map[item];
var display = ''
+ "<div class='typeahead_wrapper'>"
+ "<div class='typeahead_labels'>"
+ "<div class='typeahead_primary'>" + p.Name + "</div>"
+ "<div class='typeahead_third'><i>LastFour:</i> " + p.LastFour + "</div>"
+ "</div>"
+ "</div>";
return display;
},
updater: function (item) {
window.location.href = ("/Monet/Agent/Details/" + map[item].SymetraNumber);
}
});
这是我将其绑定到
的搜索框 <form class="navbar-search pull-left">
<input type="text" name="names" value="" id="AgentSearch" class="search-query" data-provide="typeahead" placeholder=" Agent Search"/>
</form>
修改
以下是浏览器呈现的脚本标记
<script src="/Scripts/modernizr-1.7.min.js" type="text/javascript"></script>
<script src="/Scripts/jquery-1.8.3.js" type="text/javascript"></script>
<script src="/Scripts/jquery-ui.js" type="text/javascript"></script>
<script src="/Scripts/typeahead.js" type="text/javascript"></script>
答案 0 :(得分:0)
看起来没有定义typeahead。
如果您尝试扩展typeahead,本文可能有所帮助: Extend the bootstrap-typeahead in order to take an object instead of a string
$。fn将始终返回一个对象('[]'),这就是当您注释掉.prototype.blur时错误发生变化的原因,但它们都指示'typeahead'不存在。
只是一个猜测,但它可能是一个同步问题,你的代码在库加载之前运行。