2014-10-14 2 views
0

Я пробовал искать решение здесь, но ничего не работает, поэтому я размещаю его здесь. Извините, если он уже существует.Текущая опция «выбрана» на основе URL Параметр

У меня есть список опций со значениями добавляемого с помощью 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'); 

с другим кодом на перед тем, чтобы отделить ссылку , когда я предупреждаю() leader_param, я получаю «First% 20Last». Поэтому я знаю, что эта часть работает на 100%.

Теперь, пытаясь получить выбранного лидера, я считаю, что лучший способ сравнить имя URL со значением в списке опций. Из того, что я прочитал, ближе всего у меня есть это:

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

Но все, что делает это сделать первый вариант выбран один. Я довольно застрял здесь и буду очень благодарен за любую помощь.

спасибо, что заблаговременно!

+0

Я не думаю, что строки ' "Первый% 20Last"' равно ' "Первый Последний"' .. –

ответ

1

убедитесь, что вы выполняете декодирование param:

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

Он преобразует First%20Last в First Last и вы value атрибуте вас <option> с имеешь значение, как второй, а не первый.

see: decodeURIComponent

+0

Это решило его! Большое спасибо! Я просто поместил decodeURIComponent в первую строку оператора if, и он работает отлично. Еще раз спасибо :) – noelllll

0

попробовать это

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

или

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

Если у вас есть правильное значение в переменной leader_param, Вы можете установить соответствующий параметр, выбранные с помощью prop() метод, как:

if (leader_param) { 
    $("select[name='leader_select']").find("option[value='"+leader_param+"']").prop("selected",true); 
} 
Смежные вопросы