等到 jquery 对话框返回

vjk*_*vjk 2 javascript jquery

我需要在单击按钮时打开一个弹出窗口,并为此使用 jquery 对话框。

    $(document).ready(function(){
    $("#dialog-form").dialog({
        autoOpen : false,
        height : 300,
        width : 350,
        modal : true,
        buttons : {
            "Add" : function() {
                $("#tag1").text($("#textArea").val());
                $(this).dialog("close");
            },
            Cancel : function() {
                $(this).dialog("close");
            }
        },
        close : function() {
            $("#textArea").val("");
        }
    });

});

    function openWindow(){
        $("#dialog-form").dialog("open");
        statement1;
        statement2;
        }


<button id="add" onclick="openWindow()">Add</button>
Run Code Online (Sandbox Code Playgroud)

这里的问题是当我单击按钮时对话框被打开,但在我在对话框中输入一些文本之前,语句1和语句2正在执行,然后焦点来到对话框。

如何让 statement1 和 statement2 只在对话框返回后才执行?

我不想将 statement1 和 statement2 添加到“添加”函数中。没有在“添加”函数中添加语句的原因是因为我有多个按钮,每个按钮都应该先打开对话框,然后再执行不同的语句集。

Aar*_*ush 5

简单的解决方法是使用close回调:

$(document).ready(function () {
    $("#dialog-form").dialog({
        autoOpen: false,
        height: 300,
        width: 350,
        modal: true,
        buttons: {
            "Add": function () {
                $("#tag1").text($("#textArea").val());
                $(this).dialog("close");
            },
            Cancel: function () {
                $(this).dialog("close");
            }
        },
        close: function () {
            $("#textArea").val("");
            //statement1 -- won't fire until dialog is closed
            //statement2 -- won't fire until dialog is closed
        }
    });
});

function openWindow() {
    $("#dialog-form").dialog("open");
}
Run Code Online (Sandbox Code Playgroud)

另一件要考虑的事情是 $.Deferred