我正在使用Razor开发ASP.NET MVC应用程序。
我有一个包含按钮的jQuery弹出窗口。此按钮打开一个Kendo弹出窗口。 Kendo弹出窗口将按钮绑定到单击事件,但在尝试在弹出div上调用Kendo函数时抛出TypeError。
这是打开jQuery窗口时执行的代码。
$(".doc").bind("click", function () {
var stocknumber = $(this).data("link");
if (stocknumber.length > 0) {
documentsWindow.dialog("open");
documentsWindow.html("Processing... <img src=" + '@Url.Content("~/Content/images/loading.gif")' + " />");
documentsWindow.load('@Url.Action("CreateDocs", "Document")?DocForId=4&ForId=' + stocknumber);
}
});
这很好用。窗口按预期打开。以下是从CreateDocs页面触发的代码。
<script>
var upOtherWin = $("#upOtherDiv");
$("#upOtherDoc").bind("click", function (event) {
event.preventDefault();
if (!upOtherWin.data("kendoWindow")) {
upOtherWin.kendoWindow({
actions: ["Maximize", "Minimize", "Close"],
width: "50%",
title: "Upload Other Document",
modal: true
});
}
upOtherWin.data("kendoWindow").content("Loading...");
upOtherWin.data("kendoWindow").refresh({ url: '@Url.Action("UploadOtherDocs", "Document")' });
upOtherWin.data("kendoWindow").center();
upOtherWin.data("kendoWindow").open();
});
</script>
我只包含了与问题相关的代码。我已经验证了元素存在并正在被正确拾取,我已经仔细检查了语法是否正确。我的代码出错了:
upOtherWin.data("kendoWindow").content("Loading...");
并给我这条消息 - TypeError:upOtherWin.data(...)未定义
这可能是剑道图书馆没有被加载吗?我知道这个页面正在以类似的方式从应用程序的其他部分加载,因此我不确定为什么它不会在这里正确加载。
答案 0 :(得分:1)
您必须在Doc准备好使用它之后初始化keno窗口。无法在点击事件上初始化并使用它,请检查以下代码。
<script>
var upOtherWin = $("#upOtherDiv");
if (!upOtherWin.data("kendoWindow")) {
upOtherWin.kendoWindow({
actions: ["Maximize", "Minimize", "Close"],
width: "50%",
title: "Upload Other Document",
modal: true,
visible: false,
});
}
$("#upOtherDoc").bind("click", function (event) {
event.preventDefault();
upOtherWin.data("kendoWindow").content("Loading...");
upOtherWin.data("kendoWindow").refresh({ url: '@Url.Action("UploadOtherDocs", "Document")' });
upOtherWin.data("kendoWindow").center();
upOtherWin.data("kendoWindow").open();
});
<script>
如果您不确定是否加载了kendo,可以使用下面的代码进行检查
if (typeof kendo == "undefined") {
alert("Kendo Not Loaded")
}