未捕获的类型错误: 无法读取未定义的属性“构造函数”
Uncaught TypeError: Cannot read property 'Constructor' of undefined
我在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>
并试图提前输入.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>
看起来没有定义提前键入。
如果您尝试扩展预先键入,本文可能会有所帮助:提前扩展引导类型以获取对象而不是字符串
$.fn 将始终返回一个对象 ('[]'),这就是为什么当你注释掉 .prototype.blur 时错误会发生变化,但它们都表明"typeahead"不存在。
只是一个猜测,但这可能是一个同步性问题,即您的代码在库加载之前正在运行。
相关文章:
- 现有函数未定义
- jQuery$.post可以在chrome、safari中工作,但不能在FF中工作(声明成功回调函数未定义)
- AngularJS ng repeat显示原型函数未定义
- jQuery onclick 函数:未定义不是一个函数
- 在构造函数中定义函数会比将其附加到原型消耗更多的内存
- JavaScript 对象 - 对象值在构造后未定义
- 函数未定义
- 为什么在jsfiddle中显示ReferenceError:函数未定义
- 函数未定义,实际定义时为
- 函数未定义的Javascript(Basic)
- 在Javascript构造函数中定义属性的正确方式
- ajax函数未定义
- 为什么window.onload函数未定义
- 模块模式:函数未定义
- 包含的javascript源代码通过PHP,onmousemove事件,函数未定义
- AngularJS和Angular Snap:SSnap构造函数未定义
- 未在自定义 OL3 控件的构造函数中定义的原型属性
- 在构造函数中定义时未定义的类变量
- 在构造函数中定义的Javascript数组在原型中未定义
- 为什么我得到一个'函数未定义'即使我将函数添加到构造器的原型中