单击问题 - 确认警报不会阻止HREF点击

时间:2011-08-09 13:30:20

标签: jquery click confirm propagation

我正在努力完成以下任务:

当用户点击包含复选框的div(“productListMatch”)外部时,如果选中任何复选框,则会显示确认提醒,让用户知道他们没有保存复选框选项。

简而言之,我正在检查是否保存了选中的项目。如果是,请通知用户,为他们提供保存与否的选项。

这就是我所做的:

function formCheckboxConfirm() {
    $('html').click(function() {
        var elem = document.getElementById('frm-list-product').elements;
        for (i = 0; i < elem.length; i++) {
            if(elem[i].type == "checkbox" && elem[i].checked) {
                confirm("You have made changes! Do you want to proceed without saving your changes?");
                break;
            }
        }
});

    $(".productListMatch").click(function(e) {
        e.stopPropagation(); // I thought this would stop all link clicks, but it's not working as I expected.
    });
}

虽然这一般起作用,但它不适用于链接。点击后,他们会继续执行,我仍会收到确认提醒。

注意:div之外的网页上有许多导航链接。 “productListMatch”div本身是jquery选项卡中的内容的一部分(第2个中的第2个),因此必须单击该选项卡才能看到“productListMatch”div。

我想要的是:

  • 如果有任何链接 - 除了复选框(和保存按钮) - 单击
    • 停止执行链接
      • 执行检查是否选中了复选框
        • 如果选中复选框,请提供确认提醒
          • 如果用户点击“确定”,则网页会继续链接最初点击的链接
          • 如果用户点击“取消”,则网页不会继续链接最初点击的链接
        • 如果未选中复选框,则不会显示确认提醒,并且网页会继续链接最初检查的链接

我尝试了几个场景,虽然我可以让链接停止(我使用的是preventDefault),但我不确定如何让它们重新开始。也许我说这件事都错了。

我将不胜感激。

感谢。

斯蒂芬

1 个答案:

答案 0 :(得分:1)

confirm()函数返回您需要测试的布尔值。例如:

if confirm("You have made changes! Do you want to proceed without saving your changes?") {
   // continue or whatever 
} else {
   return false; // or break or whatever
}