Javascript 等待警报响应
我目前有一个功能,当在下拉列表中更改值时,要求用户确认。使用标准的JavaScript确认,这可以很好地工作。这是我的建议 但是在使用时,更改事件总是在我能够确认/取消之前发生。也就是说,当我选择一个新值并按cancel时,它不会停止事件并重置以前的值。它通过常规的JavaScript确认对话框实现了这一点 还值得注意的是,这个JavaScript甚至可能是无效的,对JavaScript来说是非常新的,例如,从confirm函数返回和从swal函数返回不起作用 然而,在谷歌搜索之后,我发现有类似问题的人 但这似乎有点不太正常,因为它阻止了任何操作,但当选择确认时,他会重新创建默认情况下应该调用的函数。对于这么简单的事情来说,这似乎是一个相当大的挑战Javascript 等待警报响应,javascript,jquery,sweetalert,Javascript,Jquery,Sweetalert,我目前有一个功能,当在下拉列表中更改值时,要求用户确认。使用标准的JavaScript确认,这可以很好地工作。这是我的建议 但是在使用时,更改事件总是在我能够确认/取消之前发生。也就是说,当我选择一个新值并按cancel时,它不会停止事件并重置以前的值。它通过常规的JavaScript确认对话框实现了这一点 还值得注意的是,这个JavaScript甚至可能是无效的,对JavaScript来说是非常新的,例如,从confirm函数返回和从swal函数返回不起作用 然而,在谷歌搜索之后,我发现有类似
SweetAlert是否有可能像常规确认对话框一样工作?该值不会被设置回原位,因为swal中的该值不是选择对话框,而是sweet alert对话框。因此,在您的更改事件中,您必须定义一个保存更改的select元素的变量,并在用户单击“否”时使用该变量设置回值
.change(function(e) {
var select = this; // save select element to variable
$(this).blur();
return swal({
title: "Are you sure?",
text: "Do you want to change the dropdown?",
type: "warning",
showCancelButton: true,
confirmButtonColor: "#DD6B55",
confirmButtonText: "Yes",
cancelButtonText: "No",
closeOnConfirm: true,
closeOnCancel: true
},
function(isConfirm) {
if (isConfirm) {
e.preventDefault();
return true;
} else {
$(select).val(prev_val); // use select reference to reset value
return false;
}
});
});
您可以在此中找到一个工作示例。该值不会被设置回原位,因为swal中的该值不是select,而是sweet alert对话框。因此,在您的更改事件中,您必须定义一个保存更改的select元素的变量,并在用户单击“否”时使用该变量设置回值
.change(function(e) {
var select = this; // save select element to variable
$(this).blur();
return swal({
title: "Are you sure?",
text: "Do you want to change the dropdown?",
type: "warning",
showCancelButton: true,
confirmButtonColor: "#DD6B55",
confirmButtonText: "Yes",
cancelButtonText: "No",
closeOnConfirm: true,
closeOnCancel: true
},
function(isConfirm) {
if (isConfirm) {
e.preventDefault();
return true;
} else {
$(select).val(prev_val); // use select reference to reset value
return false;
}
});
});
您可以在此找到一个工作示例。
var prev_val;
$+dropdownId.focusfunction{
prev_val=$this.val;
}.ChangeFunction{
$this.blur;
var self=这个;
回灌{
标题:你确定吗?,
文本:是否要更改下拉列表?,
类型:警告,
showCancelButton:true,
confirmButtonColor:DD6B55,
confirmButtonText:是的,
取消按钮文字:不,
closeOnConfirm:true,
closeOnCancel:对
},
功能确认{
如果我确定{
//preventDefault无效,因为更改事件已经发生
//如果确认为真,则不执行其他操作
//更改为上一个值
//e、 防止违约;
返回true;
}否则{
//这里不引用dom元素
//它可能会被更改,因为稍后会通过swal库代码调用它,使用回调上下文之外声明的self。
$self.valprev_val;
返回false;
}
};
};
var prev_val;
$+dropdownId.focusfunction{
prev_val=$this.val;
}.ChangeFunction{
$this.blur;
var self=这个;
回灌{
标题:你确定吗?,
文本:是否要更改下拉列表?,
类型:警告,
showCancelButton:true,
confirmButtonColor:DD6B55,
confirmButtonText:是的,
取消按钮文字:不,
closeOnConfirm:true,
closeOnCancel:对
},
功能确认{
如果我确定{
//preventDefault无效,因为更改事件已经发生
//如果确认为真,则不执行其他操作
//更改为上一个值
//e、 防止违约;
返回true;
}否则{
//这里不引用dom元素
//它可能会被更改,因为稍后会通过swal库代码调用它,使用回调上下文之外声明的self。
$self.valprev_val;
返回false;
}
};
};你的代码不正常吗?@rishabhdev它正常运行。但是这很平淡,我想用SweetAlert对话框来做同样的事情。甚至SweetAlert代码似乎都是正确的。你有什么问题?@rishabhdev根据当前代码,我得到一个SweetAlert对话框,但它总是改变值。无论在对话框中按“取消”或“确认”按钮。我希望它停止更改事件,就像使用常规确认对话框一样。如果可能的话,请提供您使用Sweet Alert完成的代码的JSFIDLE。您的代码是否正常工作?@rishabhdev它用于常规JavaScript确认。但是这很平淡,我想用SweetAlert对话框来做同样的事情。甚至SweetAlert代码似乎都是正确的。你有什么问题?@rishabhdev根据当前代码,我得到一个SweetAlert对话框,但它总是改变值。无论在对话框中按“取消”或“确认”按钮。我希望它停止更改事件,就像使用常规的确认对话框一样。如果可能的话,请提供您使用Sweet Alert完成的代码的JSFIDLE。
.change(function(e) {
var select = this; // save select element to variable
$(this).blur();
return swal({
title: "Are you sure?",
text: "Do you want to change the dropdown?",
type: "warning",
showCancelButton: true,
confirmButtonColor: "#DD6B55",
confirmButtonText: "Yes",
cancelButtonText: "No",
closeOnConfirm: true,
closeOnCancel: true
},
function(isConfirm) {
if (isConfirm) {
e.preventDefault();
return true;
} else {
$(select).val(prev_val); // use select reference to reset value
return false;
}
});
});