Нажмите Issue - Подтвердите предупреждение, не предотвращая клики HREF - PullRequest
0 голосов
/ 09 августа 2011

Я пытаюсь выполнить следующее:

Когда пользователь щелкает вне элемента 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 есть несколько навигационных ссылок.Сам div "productListMatch" является частью содержимого на вкладке jquery (2-е из двух), поэтому нужно щелкнуть эту вкладку, чтобы увидеть div "productListMatch".

Что бы янапример:

  • Если нажата какая-либо ссылка - кроме флажков (и кнопки Сохранить) -
    • Прекратить выполнение ссылки
      • Выполнитьпроверьте, установлены ли флажки или нет
        • Если флажок установлен, предоставьте уведомление о подтверждении
          • Если пользователь нажимает «ОК», веб-страница продолжает ссылку, которая была первоначально нажата
          • Еслипользователь нажимает кнопку «ОТМЕНА», веб-страница не продолжает ссылку, по которой изначально щелкали
        • Если флажок не установлен, предупреждение о подтверждении отсутствует, и веб-страница продолжает ссылку, которая была первоначально проверена

Я попробовал несколько сценариев, и хотя я могу заставить ссылки остановиться (я использовал предотвращение дефолта), я не уверенкак заставить их начать заново.Возможно, я все делаю неправильно.

Буду признателен за помощь.

Спасибо.

Стивен

1 Ответ

1 голос
/ 09 августа 2011

Функция 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
}
...