根据地图点击JS中的Cookie设置语言,

时间:2019-03-01 10:38:36

标签: javascript jquery html cookies

我有两个弹出模式,允许用户选择一种语言。

  • #languages modal :允许用户选择区域,然后它将当前页面转换为所选的语言。
  • #buy-now模式:当用户单击网站上的“立即购买”链接时,会弹出此模式。

如果

  • 用户进入该网站,但没有选择语言(使用全球英语),然后单击“立即购买”链接,它将打开#buy-now模式。
  • 用户进入网站并打开#languages模态,然后单击“立即购买”链接,不应弹出#buy-now模态(因为我们已经知道用户使用的语言) )。

我已经为#buy-now模态设置了一个名为buyLang的cookie。当用户单击立即购买链接并从模式中选择一种语言时,它将设置buyLang cookie:var buyLang = $.cookie('buyLang');

为简化起见,我想:

  1. 设置一个名为language-selected的cookie。创建language-selected cookie(并且buyLang cookie不存在)后,请创建两个具有相同值的cookie。
  2. 创建buyLang cookie后,请使用相同的值创建language-selected cookie(这样,用户不必再次选择语言)。

解决此问题的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

您的问题有点复杂,我不明白您的意思,但是只要您要管理cookie,就可以使用js-cookie库。

示例:

HTML:

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/js-cookie@2/src/js.cookie.min.js"></script>

<select id="selectListLanguage">
  <option value="en">English</option>
  <option value="id">Indonesia</option>
</select>

<button id="btnSubmitLanguage">Change</button>

JS:

function btnSubmitLanguageOnClick() {
  const newLanguage = $("#selectListLanguage option:selected").val();

  if (!Cookies.get("language-selected")) {
    Cookies.set("language-selected", newLanguage);
  }

  if (!Cookies.get("buyLang")) {
    Cookies.set("buyLang", newLanguage);
  }

  //   You can set the language of the page contents in server side with reload this page
  location.reload();
}

$("#btnSubmitLanguage").click(btnSubmitLanguageOnClick);