【发布时间】:2018-07-30 13:47:09
【问题描述】:
我有以下函数创建一个对话框并使用 jQuery deferred 来等待用户响应:
function myPageUnsaved() {
var defer = $.Deferred();
$('<div></div>')
.html('You have unsaved changes. Leave this page and lose your changes?')
.dialog({
autoOpen: true,
modal: true,
title: 'Confirmation',
buttons: {
"No": function () {
defer.resolve("false");
$(this).dialog("close");
},
"Yes": function () {
defer.resolve("true");
$(this).dialog("close");
}
},
close: function () {
$(this).dialog('destroy').remove();
}
});
return defer.promise();
}
我在下面的js中调用函数:
// function to check for user changes prior to navigating to a new page
function checkPageChange() {
if (pageChanges == true) {
myPageUnsaved().then(function (answer) {
// if user answered no, stay on the page
if(answer == 'false') {
return false;
// else the user answered yes, so leave the page
} else {
return true;
}
});
} else {
return true;
}
}
我正在运行 jQuery 1.11。
对话框呈现给用户,但立即被删除。我错过了什么?
【问题讨论】:
-
我认为首先您需要使用此处提供的最新版本升级您的 jQuery 版本jquery.com/download
-
我可以调查一下,但在 1.11 中支持 Deferred。
标签: javascript jquery jquery-deferred