当我点击一个delete按钮时,我会调用下面的函数(我已经得到了一个用户列表,其中包含了他们的相关id,以及基于他们的id要删除的delete按钮),它工作得很好:
function confirmDelete(name, deleteURL) {
var description = "Delete " + name + "?";
var check = confirm(description);
if(check == true) {
self.location = deleteURL;
} else {
window.location.deleteURL = deleteURL;
}
return false;
}然后,我决定覆盖确认函数,并将其转换为如下所示的jquery对话框:
$(function () {
window.confirm = function (message) {
$('#overrideAlert').text(message).dialog({
resizable: false,
height: 140,
modal: true,
buttons: {
"Delete item": function () {
$(this).dialog("close");
},
Cancel: function () {
$(this).dialog("close");
}
}
});
};
});当我点击delete链接时,jQuery对话框正确地弹出,但当我点击'delete item‘时,它实际上并没有触发删除,它只是关闭了对话框(它应该关闭)。我在这里遗漏的可能是应该有方法(与选择ok时触发删除的JavaScript确认相同)来删除我的项目。有没有人能告诉我这里遗漏了什么?谢谢。
发布于 2013-05-01 14:57:32
您可能需要重写confirmDelete()才能使其工作。
可能是这样的:
function confirmDelete(name, deleteURL) {
var description = "Delete " + name + "?";
confirm(description, doDelete, deleteURL);
}
function doDelete(check, deleteURL) {
if(check == true) {
self.location = deleteURL;
} else {
window.location.deleteURL = deleteURL;
}
}
$(function () {
window.confirm = function (message, callbackFunc, funcArg) {
$('#overrideAlert').text(message).dialog({
resizable: false,
height: 140,
modal: true,
buttons: {
"Delete item": function () {
$(this).dialog("close");
if ($.isFunction(callbackFunc)) {
callbackFunc(true, funcArg);
}
},
Cancel: function () {
$(this).dialog("close");
if ($.isFunction(callbackFunc)) {
callbackFunc(false, funcArg);
}
}
}
});
};
});更好的是,你可以将一个回调函数传递给你的新确认函数...
发布于 2013-05-01 15:30:21
我采用的方法是让.confirm函数返回一个promise。
var confirm = function() {
var def = $.Deferred();
...
"Delete Item": function() {
$(this).dialog('close');
def.resolve();
},
"Cancel": function() {
def.reject();
}
}
return def;
}
confirm("prompt").done(function() {
console.log('success');
}).fail(function() {
console.log('cancel');
});https://stackoverflow.com/questions/16313780
复制相似问题