0

我正在尝试完成以下任务:

当用户在包含复选框的 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 选项卡中内容的一部分(两个选项卡中的第二个),因此必须单击选项卡才能看到“productListMatch” div。

我想要的是这样的:

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

我尝试了几种情况,虽然我可以让链接停止(我使用了 preventDefault),但我不确定如何让它们重新开始。也许我对这整件事的看法是错误的。

我将不胜感激。

谢谢。

斯蒂芬

4

1 回答 1

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
}
于 2011-08-09T13:34:10.997 回答