首页 新闻 会员 周边

SweetAlert确认后关闭的问题

0
[已解决问题] 解决于 2017-11-30 18:01

最近用上了swal,项目需要,colseOnConfirm:true,因为“点击之后提示框不能loading住页面,不能防止用户再次点击”,所以设为true点击之后关闭,设为true问题又来了,如果执行太快里面的swal就不会弹出提示了,需要setTimeOut等待几秒钟才能弹出提示,真是蛋疼,你们有什么好的方法啊

最佳解决方案的主页 最佳解决方案 | 初学一级 | 园豆:25
提问于:2017-11-29 23:24
< >
分享
最佳答案
0

因为动画有延迟, 可以用promise,进行二次封装。

window.mconfirm = function (options) {
var prom = new Promise(function (resolve, reject) {
var swalOptions = {
title: "",
text: "",
showCancelButton: true,
confirmButtonColor: "#DD6B55",
confirmButtonText: "确认",
cancelButtonText: "取消",
closeOnConfirm: true,
closeOnCancel: true
};

if (typeof(options) == 'object') {
swalOptions = $.extend(swalOptions, options);
} else {
swalOptions = $.extend(swalOptions, {text: options});
}

swal(swalOptions, function (isConfirm) {
setTimeout(function () {
if (isConfirm) {
resolve(isConfirm);
} else {
reject(isConfirm);
}
}, 100);
});
});
return prom;
};

window.mprompt = function (options) {
var prom = new Promise(function (resolve, reject) {
var swalOptions = {
title: "",
text: "Write something interesting:",
type: "input",
showCancelButton: true,
closeOnConfirm: false,
confirmButtonText: "确认",
cancelButtonText: "取消",
inputPlaceholder: "Write something"
};

if (typeof(options) == 'object') {
swalOptions = $.extend(swalOptions, options);
} else {
swalOptions = $.extend(swalOptions, {text: options});
}

swal(swalOptions, function (inputValue) {
if (inputValue === false || inputValue === "") return false;
swal.close();
setTimeout(function () {
resolve(inputValue);
}, 100);
});
});

return prom;
};

奖励园豆:5
寻觅微笑 | 菜鸟二级 |园豆:218 | 2017-11-30 14:19

谢谢了,我先看看

最佳解决方案 | 园豆:25 (初学一级) | 2017-11-30 14:38

@求知若饥,虚心若愚: Promise 异步对象也可用 jquery  延迟对象替换。

寻觅微笑 | 园豆:218 (菜鸟二级) | 2017-11-30 14:42
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册