jQuery模态窗口在Kendo Window函数上抛出TypeError

时间:2014-08-20 23:11:36

标签: jquery kendo-ui kendo-asp.net-mvc

我正在使用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(...)未定义

这可能是剑道图书馆没有被加载吗?我知道这个页面正在以类似的方式从应用程序的其他部分加载,因此我不确定为什么它不会在这里正确加载。

1 个答案:

答案 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")
}