【问题标题】:Error: cannot call methods on dialog prior to initialization; attempted to call method 'close' Jquery onclick button错误:无法在初始化之前调用对话框上的方法;试图调用方法“关闭”Jquery onclick 按钮
【发布时间】:2014-12-14 00:57:59
【问题描述】:

我的要求是在单击取消按钮时打开对话框。单击“取消预订”后,应提交表单。

使用以下代码,我收到错误消息: 错误:无法在初始化之前调用对话框上的方法;试图调用方法'close'

我的 div 为:

<div id="dialog" title="Confirmation Required" style="display:none">
            Are you sure about this?
</div>

按钮为:

<input type="submit" id="btnCxlJob" name="btnCxlJob" value="Cancel" />

在 document.Ready 中:

$("#dialog").dialog({
        resizable: false,
        height: 140,
        modal: true,
        autoOpen: false,
        buttons: {
            'Cancel the Reservation': function() {

                $(this).dialog('close');
                document.JobConf.submit;

            },
            'Cancel': function() {
               $(this).dialog('close');
            }
        }
    });
    $("#btnCxlJob").click(function() {
        var theDialog = $("#dialog").dialog();
        alert("clicked!");
        theDialog.dialog("open");

    });

虽然我尝试了其他帖子的建议来解决这个错误,但无法摆脱这个错误。非常感谢任何帮助。谢谢

【问题讨论】:

  • 对话框按预期工作JSFiddle。如果只使用了一个版本的 jquery 和 jquery-ui-dialog 并且它们是最新的,请检查您的页面。
  • 您尝试了哪些建议?
  • 我有这些脚本:
  • 这涵盖了 jquery-ui 版本。您使用的是哪个 jquery 版本?

标签: jquery jquery-ui-dialog


【解决方案1】:

这是版本问题。将 jqueryui 1.9.2 与 jquery 1.9.1 一起使用,您没有问题。如果您同时使用两者的最新版本,那就更好了。

在我的测试中使用

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.9.2/jquery-ui.min.js"></script>

【讨论】:

  • 酷,这确实解决了错误。我会接受答案。但是,对话窗口会打开,它不会等待我单击确认按钮并提交表单。对此有任何建议。非常感谢你
  • 您的输入是否在表单中使用提交按钮取消?
  • 是的,带有取消值的输入提交按钮在表单内
【解决方案2】:

您必须阻止提交按钮提交表单。将事件参数e添加到onClick中的函数中,并在其上使用preventDefault

$("#btnCxlJob").click(function(e) {
    var theDialog = $("#dialog").dialog();
    alert("clicked!");
    theDialog.dialog("open");
    e.preventDefault();
});

document.JobConf.submit; 替换为$("#&lt;id of the form&gt;").submit();

将其与分配给您的表单的 id 一起使用。如果是 JobConf,则代码为 $("#JobConf").submit();

【讨论】:

  • Barry,e.preventDefault() 有效,但现在没有提交表单。该表单有一个 onsubmit 函数来检查验证。如果我使用 return false;它不执行取消操作,而是提交表单。有更多建议请。
  • 巴里,非常感谢你帮助我。 $("#JobConf").submit();提交表单,但在 servlet 中编写代码以检查执行预期处理的按钮 name="btnCxlJob"。
  • 这里,表单正在提交,但取消操作没有执行,因为它取决于传递按钮名称属性。您能否提出解决方案。再次感谢
猜你喜欢
  • 2019-10-02
  • 1970-01-01
  • 2013-03-10
  • 2014-05-29
  • 2013-03-08
  • 1970-01-01
  • 1970-01-01
  • 2014-04-13
  • 2013-02-10
相关资源
最近更新 更多