【发布时间】:2018-12-11 17:00:01
【问题描述】:
我用Sweetalert2创建了这个弹出窗口序列
用户选择年份,等待报表生成,最后可以下载报表。
这是代码(简化)
var startYear = 2017;
$("#test").click(function(){
var _id = ....;
var listYears = {};
for (var i = parseInt(moment().format("YYYY")); i >= startYear; i--) listYears[" " + i] = i;
swal({
title: "Data export",
html : "Select a year and press the <strong>export</strong> button.",
reverseButtons : true,
showCancelButton: true,
cancelButtonText : "Cancel",
confirmButtonText: "Export",
validationMessage : "Select a year",
inputClass : "form-control", /* bootstrap 4 class */
input: "select",
inputOptions: listYears,
inputPlaceholder: "Select..",
}).then((result) => {
if (result.value) {
swal({
title: 'Wait',
text: 'Report generation in progress..',
allowOutsideClick : false,
showConfirmButton : false,
onOpen: () => {
swal.showLoading();
var dataGET = ".....&id=" + _id + "&year=" + parseInt(result.value);
var xhr = $.ajax({
type: "GET",
url: ".....php",
data : dataGET,
cache: false,
success : function(val){
var _this = this;
if(val == "OK_DOWNLOAD"){
var pathDownload = xhr.getResponseHeader(".....");
var nameDownload = xhr.getResponseHeader(".....");
swal({
type : "success",
title: 'Perfect',
html : 'Now you can download the report<br/><a class="btn btn-custom-secondary mt-3" href="......" target="_blank" id="tempBtnDownloadReport"><span class="icon-download1"></span></a>',
showConfirmButton : false,
});
$("#tempBtnDownloadReport").click(function(){
swal.close();
});
}else{
_this.error();
}
},
error : function(){
swal("Attention","Error creating report, please try again.","error");
},
complete : function(jqXHR,textStatus){
swal.hideLoading();
xhr = null;
}
});
}
});
}
});
我的问题是当用户按下导出按钮并且选择它没有被“选择”时。我想触发错误消息(“选择一年”),例如these examples。
【问题讨论】:
-
如果我理解正确,您应该在第一个
swal中添加inputValidator。除非用户选择了一年,否则此输入验证器不会加载第二个 swal。如果这是你想要达到的目标,我可以给你一个完整的例子。 -
是的,这就是我想要的。我尝试使用 inputValidator,但遇到了问题。
标签: sweetalert2