【问题标题】:Dialog method supported in one page but not in another一个页面支持对话框方法,但另一个页面不支持
【发布时间】:2018-04-06 21:50:43
【问题描述】:

我有 2 个 .NET 网页,它们在两个页面中都有相同的弹出框。两个页面中的 JavaScript 完全相同,我将代码从可以工作的页面复制到另一个页面,但它不起作用。那个不工作的给我错误信息:

Scripts/jquery-3.3.1.js
0x800a01b6 - JavaScript runtime error: Object doesn't support property or method 'dialog'.  

我尝试将代码放在页面末尾,没有区别。当我与 IE 开发人员一起检查页面时,我可以告诉 jquery 正在加载到页眉中的页面中。希望有人能指出我正确的方向。

<link href="Content/themes/base/jquery-ui.css" rel="stylesheet" />
<link  href ="~/Styles/Default.css"  rel="stylesheet" />
<script src="../Scripts/jquery-3.3.1.js"></script>
<script src="../Scripts/jquery-ui-1.12.1.js"></script>
<script>
    $(document).ready(function() {
        $("#dd2875").dialog({
            buttons: {
                "Cancel": function() {
                    $("#dd2875").dialog('close');
                }
            },
            dialogClass: 'myTitleClass',
            draggable: false,
            width: 800,
            height: 400,
            hide: 2000,
            show: 'slidedown',
            hide: 'explode',
            autoOpen: false
        });

        $("#btnNewAccount").click(function(evt) {
            evt.preventDefault();
            $("#dd2875").dialog('open');
        });
    });
</script>

【问题讨论】:

  • 您的元素#dd2875 是否可能不在页面上?
  • 同意@stackoverfloweth。如果您没有带有id=dd2875 的元素,则脚本将没有可调用dialog() 的对象。
  • 是的,它在页面上,因为它在页面打开时显示在页面底部,我通过开发人员检查了它,它就在那里。我还注释了除 click 函数之外的所有代码,并放置了一个警告框,以确保 jquery 正常工作。

标签: javascript jquery asp.net jquery-ui-dialog


【解决方案1】:

DOM 可能不包含 ID 为 dd2875 的元素,

验证#dd2875 在您调用dialog() 时确实存在于页面上

【讨论】:

  • DOM 确实包含 id dd2875,所以我很困惑为什么它不起作用。
  • 在调用“dialog”之前尝试“console.log($("dd2875").length)”。这将明确地告诉你该元素是否是它需要的时间
  • 我没有从您建议的代码中得到任何响应。这是我在控制台中收到的错误消息。
  • 没有日志意味着我们为空的对象。
  • 是的,但为什么呢? div 在 DOM 中。我尝试用不同的名称重写代码并将代码放在不同的位置。没有任何效果。 ASP.Net 中是否有任何可能干扰的内容。
【解决方案2】:

我输入了您发送的代码,这就是我在控制台中返回的内容。

jQuery.Deferred exception: Object doesn't support property or method dialog' TypeError: Object doesn't support property or method 'dialog'
 at Anonymous function (http://localhost:60086/Add_CAC_ID.aspx:14:13)
at mightThrow (http://localhost:60086/Scripts/jquery-3.3.1.js:3534:10)
at Anonymous function (http://localhost:60086/Scripts/jquery-3.3.1.js:3602:12) undefined

【讨论】:

    【解决方案3】:

    我想通了,不得不返回并一次一个部分地重写页面才能做到这一点。问题是 JavaScript 和 asp 验证控件之间的冲突。当我将控件放在页面上时,它会导致对话框出错。我找到了两种解决冲突的方法。我可以在页面加载中添加第一行,或者在 JavaScript 中添加第二行,其中一个都可以。感谢您帮助我指出正确的方向。

    Unobtrusivevalidaionmode = Unobtrusivevalidaionmode .none
    or 
    $j = $.noConflict;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-17
      • 2017-11-16
      • 2011-02-14
      • 1970-01-01
      • 2018-04-04
      • 1970-01-01
      • 1970-01-01
      • 2014-12-28
      相关资源
      最近更新 更多