基于 URL 参数的当前选项"selected"



我试着在这里寻找解决方案,但什么都不起作用,所以我在这里发布了一个。抱歉,如果它已经存在。

我有一个选项列表,其中包含使用PHP(Twig)添加的值,如下所示:

      <select class='form-control input-sm leader-select' name='leader_select' id='leader-select' style="height:42px;width:115%;">
        <option selected disabled>Leaders</option>
          {% for leader in leader_list %}
            <option id='{{ leader.mold_maker }}' class="leader-options" value='{{ leader.mold_maker }}'>{{ leader.mold_maker }}</option>
          {% endfor %}
      </select>

它从数据库中提取每个引线名称(第一个和最后一个),并将它们显示为一个选择框。

我正在努力使它,当一个被选中时,它会显示在下一个页面上,并且该名称已经被选中。

如果选择了引线,则URL如下所示:http://example.com/page?leader=First%20Last

我从URL中提取名称,如下所示:

var leader_param = GetURLParameter('leader');

在此之前还有一些其他代码来分隔链接,当我alert()leader_param时,我会得到"First%20Last"。所以我知道这个部分100%有效。

现在,当试图获得当前选择的领导者时,我认为最好的方法是将URL名称与选项列表中的值进行比较。根据我所读到的,我拥有的最接近的东西是:

  if (typeof leader_param != 'undefined') {
    $("select[name='leader_select']").val(leader_param);
  }

但所要做的就是使第一个选项成为选定的选项。我被困在这里,非常感谢任何帮助。

提前非常感谢!

确保您正在对param:进行解码

var leader_param = decodeURIComponent( GetURLParameter('leader') );

它会将First%20Last转换为First Last,并且您的<option>value属性的值与第二个值类似,而不是第一个值。

请参阅:decodeURIComponent

假设变量leader_param中的值正确,则可以使用prop()方法将相应的选项设置为所选选项,如:

if (leader_param) {
  $("select[name='leader_select']").find("option[value='"+leader_param+"']").prop("selected",true);
}

尝试这个

$("yourSelect").find(" option[value='" + leader_param + "']").prop('selected', 'selected');

$("yourSelect").find(" option[value='" + decodeURIComponent(leader_param) + "']").prop('selected', 'selected');

最新更新