首页 > 解决方案 > 有没有办法在 turbolinks.visit(url) 之后的选择菜单中显示选定的选项值

问题描述

我有选择菜单,其中包含许多以“url”为值的选项。一旦用户单击该选项,它会将他们带到特定的 url。我希望选择的选项在转到特定网址时显示在选择菜单上。

代码:HTML:

<div data-controller="dropdown">
<select id="abcMenu" data-action="dropdown#abc">
    <option value="/abc">A</option>
    <option value="/xyz">B</option>
    <option value="/def">C</option>
</select>
</div>

Javascript

 abc(){

  var elt = document.getElementById('abcMenu');
  elt.options[elt.selectedIndex].setAttribute('selected','selected');
   var option = elt.options[elt.selectedIndex].value;
   Turbolinks.visit(option);  
 }

Turbolinks 将进入下一个路径,而下拉选项被预选为第一个选项。谁能让我知道如何解决这个问题。

标签: javascriptjqueryruby-on-railsrubyruby-on-rails-5

解决方案


您可以使用window.location.pathname获取路径,然后从选择中设置相应的选项:

  function selectOptionByValue(element, value){
    for(var i=0; i < element.options.length; i++) {
      if(element.options[i].value == value) {
        element.selectedIndex = i;
      }
    }
  }

其中 element 是选择元素, value 是您要检查的路径。


推荐阅读