JavaScript运行时错误:在初始化之前无法调用对话框上的方法;试图打电话'关闭'

时间:2014-04-25 15:01:01

标签: javascript jquery jquery-ui-dialog

我是Javascript的新手。我正在使用jQuery 1.11.0和jQuery UI 1.10.4以及一个插件掩码。我在函数后面调用函数closeDialog。我收到错误0x800a139e - JavaScript运行时错误:无法在初始化之前调用对话框上的方法;试图打电话给方法'关闭'我已经搜遍了但无济于事。如何初始化对话框?任何帮助表示赞赏。

<script type="text/javascript">
$(document).ready(function () {
    $("#tabs").tabs()

    var source = $("#dialog").parent()

    $("#dialog").dialog({
        //autoOpen: true,
        height: 130,
        width: 325,
        open: function (type, data) {
            $(this).parent().appendTo(source)
        },
        close: function (type, data) {
            $(this).remove()
        }
    })

    $(".datepicker").datepicker() 

    $(".phonenumber").mask("(999) 999-9999")

    $(".zipcode").mask("00000-0000")

})

function closeDialog() {
    $("#dialog").dialog("close")
}

function disableTabs() {
    $("#tabs").tabs({
        disabled: [1, 2]
    })
}

function enableTabs() {
    $("#tabs").tabs({
        disabled: []
    })
}

function alertBox() {
    alert("Please choose a valid selection.")
}

 Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
   If Not Page.IsPostBack Then
           Dim script As String = "closeDialog();"
           ScriptManager.RegisterStartupScript(Me, Me.GetType(), "CloseDialog", script, True)
        End If
    End If
End Sub

2 个答案:

答案 0 :(得分:1)

看起来你的closeDialog函数在文档就绪事件之前被调用。 尝试使用ScriptManager.RegisterClientScriptBlock方法而不是ScriptManager.RegisterStartupScript。

答案 1 :(得分:0)

pageLoad()方法被调用更新面板的每个部分回发但是$(document).ready()不会被调用更新面板的每个部分回发。 $(document).ready()只被调用一次(在第一次加载页面时)。因此,用$(document).ready()方法编写的代码不会被初始化为每个部分回发。