2017-01-19 3 views
0

У меня есть несколько выпадающих списков на странице регистрации для конференции. Гости должны выбрать свой первый и второй выбор дневных занятий. Итак, если гость выбирает «Свободное время» в раскрывающемся меню «Первый выбор», «Отпускное время» следует отключить в раскрывающемся меню «Второй выбор».Раскрывающийся список Javascript отключает опции

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

Однако мне не удалось найти решение, если гость сначала выбирает из меню «Второй выбор». Если это произойдет, они могут выбрать что угодно из меню «Первый выбор», и ничто не отключено. Вот моя функция:

function checkSelects(select1Id, select2Id) { 
    var select1 = document.getElementById(select1Id); 
    var select2 = document.getElementById(select2Id); 


    if (select1.value) { 
     for (var i = 0; i < select2.options.length; i++) { 
      var currentOption = select2.options[i]; 

      if (select1.value === currentOption.value) { 
       currentOption.disabled = true; 
      } else { 
       currentOption.disabled = false; 
      } 
     } 
    } 
} 

Пример того, как варианты для списка устанавливаются:

<p> 
    Sunday - First Choice<span class="required">*</span> 
</p> 
<div class="dropdown"> 
    <select id="selectOne" onchange="javascript:checkSelects('selectOne', 'selectTwo')"> 
     <option></option> 
     <option name="ActivitySunday1" id="ActSun1_Leisure" value="Leisure">Leisure Time</option> 
     <option name="ActivitySunday1" id="ActSun1_Duck" value="Duck and Fenway Tour">Boston Duck and Fenway Tour</option> 
     <option name="ActivitySunday1" id="ActSun1_Revealed" value="Boston Revealed">Boston Revealed</option> 
     <option name="ActivitySunday1" id="ActSun1_Cambridge" value="Cambridge and Harvard Tour">Cambridge and Harvard Tour</option> 
    </select> 
</div> 
<div id="actsun1Error" class="error" style="display: none;"> 
    Please select your Second choice of an afternoon activity for Sunday April 24th. 
</div> 
<p> Sunday - Second Choice<span class="required">*</span></p> 
<div class="dropdown"> 
    <select id="selectTwo" onchange="javascript:checkSelects('selectOne', 'selectTwo')"> 
     <option></option> 
     <option name="ActivitySunday2" id="ActSun2_Leisure" value="Leisure">Leisure Time</option> 
     <option name="ActivitySunday2" id="ActSun2_Duck" value="Duck and Fenway Tour">Boston Duck and Fenway Tour</option> 
     <option name="ActivitySunday2" id="ActSun2_Revealed" value="Boston Revealed">Boston Revealed</option> 
     <option name="ActivitySunday2" id="ActSun2_Cambridge" value="Cambridge and Harvard Tour">Cambridge and Harvard Tour</option> 
    </select> 
</div> 
<div id="actsun2Error" class="error" style="display: none;"> 
    Please select your Second choice of an afternoon activity for Sunday April 24th. 
</div> 

Спасибо за помощь!

+0

Можете ли вы опубликовать остальную часть html (второй элемент select)? –

+0

Несомненно. См. Править. –

ответ

1

Хорошо, теперь я считаю, что понимаю. Это может быть фактически разрешено путем внесения минимальных изменений в ваш HTML. Просто измените параметры, которые вы отправляете в событии onchange, для второго выбора, и вы можете использовать свой оригинальный javascript.

<p> 
    Sunday - First Choice<span class="required">*</span> 
</p> 
<div class="dropdown"> 
    <select id="selectOne" onchange="javascript:checkSelects('selectOne', 'selectTwo')"> 
     <option></option> 
     <option name="ActivitySunday1" id="ActSun1_Leisure" value="Leisure">Leisure Time</option> 
     <option name="ActivitySunday1" id="ActSun1_Duck" value="Duck and Fenway Tour">Boston Duck and Fenway Tour</option> 
     <option name="ActivitySunday1" id="ActSun1_Revealed" value="Boston Revealed">Boston Revealed</option> 
     <option name="ActivitySunday1" id="ActSun1_Cambridge" value="Cambridge and Harvard Tour">Cambridge and Harvard Tour</option> 
    </select> 
</div> 
<div id="actsun1Error" class="error" style="display: none;"> 
    Please select your Second choice of an afternoon activity for Sunday April 24th. 
</div> 
<p> Sunday - Second Choice<span class="required">*</span></p> 
<div class="dropdown"> 
    <select id="selectTwo" onchange="javascript:checkSelects('selectTwo', 'selectOne')"> 
     <option></option> 
     <option name="ActivitySunday2" id="ActSun2_Leisure" value="Leisure">Leisure Time</option> 
     <option name="ActivitySunday2" id="ActSun2_Duck" value="Duck and Fenway Tour">Boston Duck and Fenway Tour</option> 
     <option name="ActivitySunday2" id="ActSun2_Revealed" value="Boston Revealed">Boston Revealed</option> 
     <option name="ActivitySunday2" id="ActSun2_Cambridge" value="Cambridge and Harvard Tour">Cambridge and Harvard Tour</option> 
    </select> 
</div> 
<div id="actsun2Error" class="error" style="display: none;"> 
    Please select your Second choice of an afternoon activity for Sunday April 24th. 
</div> 

Для наглядности вы можете переименовать переменные в своем JS.

function checkSelects(sourceSelectId, targetSelectId) { 
    var sourceSelect = document.getElementById(sourceSelectId); 
    var targetSelect = document.getElementById(targetSelectId); 


    if (sourceSelect.value) { 
     for (var i = 0; i < targetSelect.options.length; i++) { 
      var currentOption = targetSelect.options[i]; 

      if (sourceSelect.value === currentOption.value) { 
       currentOption.disabled = true; 
      } 
      else { 
       currentOption.disabled = false; 
      } 
     } 
    } 
} 
+0

Мне это нужно, чтобы бежать. Если во втором выпадающем меню выбрано что-то (Sunday Second Choice/selectTwo), мне нужно, чтобы этот параметр был отключен в меню «Первый выбор». Это работает наоборот (если первый выбор выбран первым), но я не могу заставить его работать другим способом. Надеюсь, это имеет смысл. –

+0

Hm. Это не работает для меня. Это просто отключил вариант выбора First Choice, который сначала не работает. Обычно я не работаю с javascript, не можете ли вы уточнить эту часть: «Я не верю, что вам нужно установить событие onchange для второго выбора». Спасибо. –

+0

Ах, отлично! Огромное спасибо. Это имеет смысл сейчас. –

Смежные вопросы