当前选项"已选择"基于URL参数

时间:2014-10-14 18:12:38

标签: javascript jquery html

我试过在这里寻找解决方案,但没有任何工作,所以我在这里发帖。对不起,如果它已经存在。

我有一个选项列表,其中使用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>

从数据库中提取每个领导者名称(第一个和最后一个)并将其显示为选择框。

我正在尝试这样做,以便当选择一个时,它会显示在已选择该名称的下一页上。

如果选择了某位潜在客户,则网址如下所示:http://example.com/page?leader=First%20Last

我正在从URL中提取名称:

var leader_param = GetURLParameter('leader');

在此之前使用其他一些代码来分隔链接,当我提醒()leader_param时,我得到“First%20Last”。所以我知道那部分是100%工作的。

现在,在尝试获取当前选定的领导者时,我认为最好的方法是将URL名称与选项列表中的值进行比较。从我所读到的,我最接近的是:

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

但所有这一切都是使第一个选项成为选定的选项。我非常喜欢这里,非常感谢任何帮助。

非常感谢你!

3 个答案:

答案 0 :(得分:1)

确保你正在解密param:

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

它会将First%20Last转换为First Last,而您value的{​​{1}}属性具有第二个值,而不是第一个值。

see: decodeURIComponent

答案 1 :(得分:0)

试试这个

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

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

答案 2 :(得分:0)

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

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