我有一个按钮,点击它时会触发:
var approved = false;
$('.confirm').on('click', function (e) {
var type = $(this).attr("data-confirm");
if (approved === false) {
bootbox.confirm("Are you sure would like to " + type +"?", function (result) {
if (result) {
approved = true;
$(this).trigger('click');
}
});
e.preventDefault();
}
});
它是一个带有2个按钮的模态确认框,取消并确认。 这里的目标是等待点击执行,直到用户点击确认框。 当代码运行时,它显示框并等待,如果用户点击取消,它关闭模式并且不会触发点击,完美无误,如果用户点击确认它关闭模态,则分配批准为真,但是点击事件不会再次使用新命令触发。
如何更改此功能以执行此操作。
如果批准为false,请加载bootbox.confirm并暂停。如果(结果)分配批准为true,则用户点击确认其加载并继续单击。
有任何帮助吗?感谢
答案 0 :(得分:1)
我的问题是,点击处理程序中的this
与点击的按钮不同
var approved = false;
$('.confirm').on('click', function (e) {
var type = $(this).attr("data-confirm"),
//use a closure variable since `this` inside the confirm callback is not the button
$this = $(this);
if (approved === false) {
bootbox.confirm("Are you sure would like to " + type + "?", function (result) {
if (result) {
approved = true;
$this.trigger('click');
}
});
e.preventDefault();
}
});
注意:这仍然可能无法在所有情况下使用。即如果原始点击有一个默认操作,如anchor
元素点击可能不会触发,如果还有另一个点击处理程序注册可能仍会被触发。
答案 1 :(得分:0)
确定
我找到了解决方案,希望它可以帮助别人。这是我的解决方案:
<强> HTML 强>
<button type="button" class="btn btn-primary mybutton" data-confirm="submit"> Submit</button>
<强> JS 强>
$('.mybutton').on('click', function (e) {
var type = $(this).attr("data-confirm"),
bootbox.confirm("Are you sure would like to " + type + "?", function (result) {
if (result) {
$('#Myform').submit();
}
else {
e.eventPrevent();
}
});
});
基本上我所做的是将按钮类型从submit
更改为button
。然后在按钮上单击,它会检查确认,如果用户单击是,则提交表单,否则会阻止单击继续。
现在很好用。