我需要在单击按钮时打开一个弹出窗口,并为此使用 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 添加到“添加”函数中。没有在“添加”函数中添加语句的原因是因为我有多个按钮,每个按钮都应该先打开对话框,然后再执行不同的语句集。
简单的解决方法是使用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
| 归档时间: |
|
| 查看次数: |
15451 次 |
| 最近记录: |