2017-01-19 9 views
0

会議の登録ページに複数のドロップダウンリストがあります。ゲストは、1回目と2回目の午後のアクティビティを選択することになっています。そのため、ゲストがFirst Choiceドロップダウンメニューで "Leisure time"を選択した場合、Second Choiceドロップダウンメニューで "Leisure Time"を無効にする必要があります。Javascriptドロップダウンリストで無効にするオプション

私はその部分を働かせました。ゲストがFirst Choiceメニューから最初に選択すると、Second Choiceメニューで適切なオプションが無効になります。

しかし、ゲストがSecond Choiceメニューから最初に選択した場合、私は解決策を見つけることができませんでした。その場合、First Choiceメニューから何かを選択することができ、何も無効にはなりません。ここに私の機能は次のとおりです。

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(2番目の選択要素)を投稿できますか? –

+0

編集を参照してください。 –

答えて

1

今、私は理解していると信じています。これは実際にあなたのHTMLに最小限の変更を加えることで解決できます。 2回目の選択のために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

私はそれを実行する必要があります。 2番目のドロップダウンメニュー(Sunday Second Choice/selectTwo)で何かが選択されている場合は、First Choiceメニューでそのオプションを無効にする必要があります。最初の選択肢が最初に選択された場合、それは逆の方法で動作しますが、それ以外の方法で動作させることはできません。希望は意味をなさない。 –

+0

Hm。これは私のために働いていません。最初の選択肢を最初に選択するための無効化オプションが最初に動作しません。私は通常javascriptで作業しませんが、この部分についてより具体的にすることができますか: "2回目の選択のためにonchangeイベントを設定する必要はないと思います。 ありがとうございます。 –

+0

ああ、完璧!どうもありがとうございます。これは今や理にかなっています。 –

関連する問題