【问题标题】:Microsoft JScript runtime error: Object doesn't support property or method 'dialog'Microsoft JScript 运行时错误:对象不支持属性或方法“对话框”
【发布时间】:2012-04-23 09:06:14
【问题描述】:

我正在使用 .ascx 用户控件来填充员工数据和员工图片。 在单击员工图片时,我想显示一个对话框,其中我希望有一个文本字段和一个文本框供用户输入。 Click 事件触发良好,但通过对话框它给了我“Microsoft JScript 运行时错误:对象不支持属性或方法'对话框'”的错误。请任何人帮助我用文本字段和文本框填充对话框。我对 JQUERY 真的很陌生,并且很难让它发挥作用。

在下面的代码 sn-p 中,我添加了我在网上找到的示例之一的对话代码。

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="OpenAccessDataProvider,a4a794260c0b4440b466f75d11146db8.ascx.cs" Inherits="SitefinityWebApp.SfCtrlPresentation.OpenAccessDataProvider_a4a794260c0b4440b466f75d11146db8" %>
<%@ Register TagPrefix="sf" Namespace="Telerik.Sitefinity.Web.UI.PublicControls.BrowseAndEdit" Assembly="Telerik.Sitefinity" %>
<%@ Register TagPrefix="sf" Namespace="Telerik.Sitefinity.Web.UI.ContentUI" Assembly="Telerik.Sitefinity" %>
<%@ Register TagPrefix="sf" Namespace="Telerik.Sitefinity.Web.UI.Comments" Assembly="Telerik.Sitefinity" %>
<%@ Register TagPrefix="sf" Namespace="Telerik.Sitefinity.Web.UI.Fields" Assembly="Telerik.Sitefinity" %>
<%@ Register TagPrefix="sf" Namespace="Telerik.Sitefinity.Web.UI" Assembly="Telerik.Sitefinity" %>
<%@ Register TagPrefix="telerik" Namespace="Telerik.Web.UI" Assembly="Telerik.Web.UI" %>

<telerik:RadListView ID="dynamicContentListView" ItemPlaceholderID="ItemsContainer" runat="server" EnableEmbeddedSkins="false" EnableEmbeddedBaseStylesheet="false">
    <LayoutTemplate>
        <ul class="sfitemsList sfitemsListTitleDateTmb">
            <asp:PlaceHolder ID="ItemsContainer" runat="server" />
        </ul>
    </LayoutTemplate>

        <ItemTemplate>
      <li class="sfitem sfClearfix">
            <h2 class="sfitemTitle">
                <sf:DetailsViewHyperLink ID="DetailsViewHyperLink" TextDataField="Title" runat="server" />
            </h2>
           <sf:AssetsField ID="AssetsField1" runat="server" DataFieldName="Picture" />
           <sf:SitefinityLabel ID="SitefinityLabel1" runat="server" Text='<%# Eval("Designation")%>'  WrapperTagName="div" HideIfNoText="true" CssClass="sfitemShortTxt" />           
          <sf:SitefinityLabel ID="SitefinityLabel2" runat="server" Text='<%# Eval("CompanyName")%>' WrapperTagName="div" HideIfNoText="true" CssClass="sfitemShortTxt" />
          <sf:AssetsField ID="AssetsField2" runat="server" DataFieldName="Documents"/>
      </li>
    </ItemTemplate>
</telerik:RadListView>

<sf:Pager id="pager" runat="server"></sf:Pager>

<script type="text/javascript">
    $(document).ready(function () {
        $(".sfClearfix .sfimageWrp img").click(function () {

//            $(document).ready(function () {
                var $dialog = $('<div></div>')
        .html('This dialog will show every time!')
        .dialog({
            autoOpen: false,
            title: 'Basic Dialog'
        });

                $('#opener').click(function () {
                    $dialog.dialog('open');
                    // prevent the default action, e.g., following a link
                    return false;
                });
//            });

            //alert("HEY THERE " + $(this).attr("src")); 
        });
    });
</script>

Regards.

【问题讨论】:

  • 似乎 jquery ui.js 没有被加载还请记住,您必须在包含任何其他库之前包含 jquery.js
  • 感谢 3nigma 的建议。我知道 jquery.js 不包含在我的代码中,但正如我提到的,我正在使用用户控件(.ascx 文件),我不知道是否允许我添加 jquery.js 脚本,因为我们在标题中添加任何脚本.aspx 页面,而在用户控件中我没有任何标题。有什么建议吗?我尝试直接添加脚本,但仍然出现相同的错误“Microsoft JScript 运行时错误:对象不支持属性或方法'对话框'”
  • 这与 Telerik 库存在某种令人讨厌的冲突。

标签: jquery jquery-dialog


【解决方案1】:

搞定了,伙计们。刚刚添加了一个用于对话框的 div,而不是从图片单击刚刚调用的 div。另外,添加了一个 JQuery.noConflict();以防止 Sitefinity 和 JQuery 库之间的任何冲突。以下是代码sn -p

<div class="dialogTest"> <br />
<br />
Please enter your email address: <input type="text" name="emailAddress" style="width:300px;" /><br /><br />

<asp:TextBox ID="txtBox" runat="server"></asp:TextBox> <br/>
<asp:Button ID="Button1" runat="server" Text="Button" CausesValidation="False" 
        onclick="Button1_Click" />
</div>

<script type="text/javascript">
$j = jQuery.noConflict();
$j(document).ready(function () {
    $j(".sfClearfix .sfimageWrp img").click(function () {
        $j(".dialogTest").addClass("open");
        //return $j(this).attr("src");
    });
});
</script>

【讨论】:

  • 恭喜修复!如果有能力,请确保将您的答案标记为“已接受”,以便其他人能够从您的成功中学习。干杯~
  • telerik 和 jquery 之间有一些冲突,所以 jquery ui 对话框会抛出一个错误。 $j = jQuery.noConflict();为我工作。
【解决方案2】:

在我的情况下,jquery 文件没有正确加载。所以我所做的是: 1) 在 Chrome 中打开页面 2) 从菜单中选择开发工具或 Ctrl+Shift+I 3) 点击网络查看全部。

【讨论】:

    【解决方案3】:

    我有同样的问题。问题是我已经加载了 2 个 Jquery 文件。 jquery-1.8.3.js 和 jquery-1.4.1.js 。所以发生了冲突。删除 jquery-1.4.1.js 文件后。它工作顺利。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多