Запомнить выбор кнопки confirm

Рейтинг: 0Ответов: 1Опубликовано: 05.04.2015

Привет.

В окне confirm есть две кнопки OK и Отмена, помогите исправить скрипт что бы после нажатия на кнопку Отмена окно Alert не появлялось сутки.

Я применил для этого куки, но почему-то не срабатывает?

if (confirm("Выбор")) {
  // кнопка OK
  document.location.href = "http://..."   
} else {
  // кнопка Отмена
  setCookie("что здесь должно быть?", "что здесь должно быть?", 10);
}

function setCookie (name, value, seconds) {
if (typeof(seconds) != 'undefined') {
    var date = new Date();
    date.setTime(date.getTime() + (seconds) * 86400);
    var expires = "; expires=" + date.toGMTString();
}
else {
    var expires = "";
}

document.cookie = name + "=" + value + expires + "; path=/";

}

Ответы

▲ 1Принят

И name, и value внутри функции setCookie нужно пропускать через encodeURIComponent при формировании строки name=value.

function setCookie (name, value, days) {
    if (typeof days != 'undefined') {
        var date = new Date();
        date.setTime(date.getTime() + (days) * 86400);
        var expires = "; expires=" + date.toGMTString();
    } else {
        var expires = "";
    }

    document.cookie = encodeURIComponent(name) + "=" + encodeURIComponent(value) + expires + "; path=/";
}

Нужна ещё фунция getCookie

function getCookie(name) {
  var matches = (document.cookie || "").match(new RegExp(
    "(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)"
  ));
  return matches ? decodeURIComponent(matches[1]) : null;
}

А сама логика должна быть примерно такой:

if (getCookie("user_canceled") != "YES") {
    if (confirm("Выбор")) {
        // кнопка OK
        window.location.href = "http://..."   
    } else {
        // кнопка Отмена
        setCookie("user_canceled", "YES", 10);
    }
}