【问题标题】:Dropdown redirect with cookie and ability to being changed带有 cookie 的下拉重定向和被更改的能力
【发布时间】:2021-02-21 18:27:39
【问题描述】:

我搜索了很多主题,但没有找到解决问题的确切方法。

我需要创建一个下拉列表,该下拉列表将放置在整个网站上,因为您始终可以将您的位置更改为另一个城市以查看优惠。我想创建一个下拉列表,客户可以在其中选择他的城市进行本地交付。此下拉菜单将放置在介绍页面和每个提供报价的页面上。用户选择城市后,将创建一个 cookie,并将用户重定向到他选择的页面。他选择的城市应该永远记住。

我的问题是什么?让我解释一下。

现在,当我选择城市(例如它的纽约)时,我的下拉菜单位于 New Yorks 页面 aswel for city change 我不断被重定向并且它永远不会结束。所以我得到了无限重定向。

目前有效的第二件事。例如,当您访问主 url 地址时 --> example.com 如果您之前选择了您的城市,它应该将您重定向到您的城市。因此,如果您在它应该将您重定向到 example.com/kategoria-produktu/cadca/ 之前选择了 New york

总结一下: 一切都很好,但是当这个下拉列表位于整个站点时,我一直被重定向到我选择的页面,这就是我需要消除的。

有什么想法吗?

我的代码在这里

<script type="text/javascript">
if (localStorage && localStorage.country) {
    location = localStorage.country;    
}

function formChanged(form) {
    var val = form.options[form.selectedIndex].value;
    if (val !== 'non-value') {
      if (localStorage) {
        localStorage.country = val;
      }
      location = val;
    }
}
</script>

<FORM NAME="form1">
<select onchange="formChanged(this);" NAME="country" SIZE="1">
<OPTION VALUE="non-value">Select delivery city
<OPTION VALUE="/kategoria-produktu/cadca/">New York
<OPTION VALUE="/kategoria-produktu/brno/">Los Angeles
<OPTION VALUE="/kategoria-produktu/bratislava/">Tokyo
</select>
</FORM>

谢谢

【问题讨论】:

  • 嗨,让你重定向到某个页面的代码在哪里?您的 js 代码目前只是将值存储在 localStorage 中,没有重定向代码。
  • 我将此代码放入网站的标题中。现在它就像您从选择框中选择您的类别(城市)一样工作,例如,当我选择纽约时,它会将我重定向到纽约,但它会在一些无限重定向循环中不断将我重定向,这是唯一的问题。这段代码记住了我最后一个选项我选择了所以我总是加载到纽约页面,这是正确的,但我需要做的是消除无限的页面重新加载。因此客户可以选择其他位置,例如洛杉矶。从选项值调用重定向,/kategoria-produktu/cadca 是在您选择 NY 后重定向您的 URL。

标签: javascript html jquery cookies


【解决方案1】:

通过编辑代码解决

<script type="text/javascript">
if(location.href.indexOf(localStorage.country) == -1){
location.href = localStorage.country
}

function formChanged(form) {
var val = form.options[form.selectedIndex].value;
if (val !== 'non-value') {
if (localStorage) {
localStorage.country = val;
}

if (!location.href.indexOf(val)) {    
location = val;
}
}
}

</script>

【讨论】:

    【解决方案2】:

    您可以检查当前位置是否等于目标位置:

    function formChanged(form) {
      var val = form.options[form.selectedIndex].value;
      if (val !== 'non-value') {
        if (localStorage) {
          localStorage.country = val;
        }
    
        if (!location.href.indexOf(val)) {    
          location = val;
        }
      }
    }
    

    【讨论】:

    • 我是 js 的新手,所以我不太明白你能提供一个演示以便我检查一下吗?谢谢
    • 在我替换了你的函数后,我仍然得到无限重定向循环
    猜你喜欢
    • 2019-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-19
    • 1970-01-01
    • 2011-08-11
    • 1970-01-01
    相关资源
    最近更新 更多