Установить куки на основе атрибута данных - PullRequest
0 голосов
/ 01 марта 2019

Я хочу установить cookie со значением атрибута данных, определенным для ссылки привязки.Пример:

  • <a href="#" data-lang="de">Deutsch</a>
  • <a href="#" data-lang="fr">Français</a>

Вариант использования:

  • Пользователь нажимает кнопку смены языка
  • Появляется модальный язык, показывающий пять разных языков.Каждая ссылка имеет различный data-lang.
  • Пользователь нажимает на выбранном им языке и затем файл cookie, называемый «выбранный язык» is created with the value of the data-lang` выбранного языка.

Настройка cookie : setCookie('language-selected','data-lang_here',7);

Как мне поступить?

Ответы [ 2 ]

0 голосов
/ 01 марта 2019

html

<a href="#" data-lang="de">Deutsch</a>
<a href="#" data-lang="fr">Français</a>

js

let anchors = document.querySelectorAll('a');
for (let anchor of anchors) {
    anchor.addEventListener("click", (event) => {
        let langValue = event.target.getAttribute('data-lang');
        setCookie("language-selected", langValue, 1); // expiration time is 1 day
    })
}


function setCookie(cname, cvalue, exdays) {
    var d = new Date();
    d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
    var expires = "expires=" + d.toUTCString();
    document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}
0 голосов
/ 01 марта 2019

Вы можете использовать плагин jQuery-cookie.Используйте $.cookie('lang-selected'), чтобы получить cookie.

HTML

    <a href="#" data-lang="de">Deutsch</a>
    <a href="#" data-lang="fr">Français</a>

Jquery

    $("a").click(function($event){
      $event.preventDefault();
      let lang = $($event.target).attr('data-lang');
      $.cookie('language-selected', lang, {expires : 30});
     });
...