以编程方式关闭对话框

JQuery Mobile 1.4 Close dialog programmatically

本文关键字:对话框 方式关 编程      更新时间:2023-09-26

由于JQM 1.4更改了一些小部件,为了使用"dialog"小部件,有两个选项:

  1. data-role = "页面" data-dialog = " true "
  2. data-rel = "弹出"

我使用第一种方法,所以当用户单击我的对话框的"确定"按钮时,我更新数据库,如果一切正常,我想关闭对话框。

正如JQM文档中提到的,我尝试过使用$( ".selector" ).dialog( "close" ),但它抛出了Uncaught Error: cannot call methods on dialog prior to initialization; attempted to call method 'close'。一些示例代码:

对话框的HTML

<div id="manage-page" data-role="page" data-dialog="true" data-corners="false" data-close-btn="right" data-overlay-theme="b"> 
    <div data-role="header">
        <h1>Manage</h1> 
    </div>
    <div data-role="content">  
        <h3>Title</h3>
        <input type="text" id="title" value=""/>
        <a href="#" id="saveTitle" data-role="button">Save</a>  
    </div>
</div>

对话框JS

$(document).on('click', '#saveTitle', function(){
    var title= $('#title').val();
    $.ajax({
        type: "POST",
        url: CUSTOM_URL,
        success: function(data) {
            if(data != -1)
                $('#manage-page').dialog('close'); 
            else
                // Some stuff
        },
        error: function() {
            console.log("ERROR saving title");
        }
    });
});

怎么了?由于

我已经解决了使用data-rel="back"在我的打开按钮和删除$('#manage-page').dialog('close');

我重现了错误。您的对话框代码是可以的,但是您必须修改使用打开对话框的方式。你必须添加选项:

$.mobile.changePage(domain() + '/private/manageDialog', {role:"dialog"});

或者添加data-rel属性:

<a href="#manage-page" data-rel="dialog">Open dialog</a>