Jquery停止点击事件直到功能完成

时间:2015-02-27 04:17:46

标签: javascript jquery

我有一个按钮,点击它时会触发:

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,则用户点击确认其加载并继续单击。

有任何帮助吗?感谢

2 个答案:

答案 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。然后在按钮上单击,它会检查确认,如果用户单击是,则提交表单,否则会阻止单击继续。

现在很好用。

相关问题