やりたいこと
radioボタンを押すたびにSelectの状態を制御するJQueryを作りたい。
制御の内容
1.ラジオボタンで会場を京都会場を、次にセレクトで日時を4月29日に選んだとき、時間の選択肢の内10:00の選択肢を選択不可(disabled)にしたい。
2.ラジオボタンで会場を大阪会場を、次にセレクトで日時を5月6日に選んだとき、時間の選択肢の内11:00の選択肢を選択不可(disabled)にしたい。
HTML
<table> <tbody> <tr> <th>会場</th> <td class="shop"> <div><input type="radio" name="会場" value="京都会場" id="kyoto" />京都会場<input type="radio" name="会場" value="大阪会場" id="osaka"/>大阪会場</span></div> </td> </tr> <tr> <th>日時<span class="must">必須</span></th> <td> <span class="formParts"><select required="required" name="希望日" class="selectS" style="width: 18%;" id="goraitenDay"> <option value="" selected="selected"></option> <option value="4月29日" id="day1">4月29日</option> <option value="5月6日" id="day2">5月6日</option> <option value="5月31日" id="day3">5月31日</option> </select></span> </td> </tr> <tr> <th>希望時間<span class="must">必須</span></th> <td><span class="formParts"><select required="required" name="時間" class="selectS" id="goraitenTime" disabled="disabled"> <option value="" selected="selected">時間</option> <option value="9:00">9:00</option> <option value="9:30">9:30</option> <option value="10:00">10:00</option><!--京都会場で4月29日の時にはここを選択不可にしたい--> <option value="10:30">10:30</option> <option value="11:00">11:00</option><!--大阪会場で5月6日の時にはここを選択不可にしたい--> <option value="11:30">11:30</option> <option value="12:00">12:00</option> <option value="12:30">12:30</option> <option value="13:00">13:00</option> <option value="13:30">13:30</option> <option value="14:00">14:00</option> <option value="14:30">14:30</option> <option value="15:00">15:00</option> <option value="15:30">15:30</option> <option value="16:00">16:00</option> </select></span> </td> </tr> </tbody> </table>
JQuery
$(function() { $('input#kyoto').on('click', function() { $('select#goraitenDay').on('change', function() { $('[name=時間] option[value="10:00"]').prop('disabled', $(this).val() == "4月29日"); }); }); }); $(function() { $('input#osaka').on('click', function() { $('select#goraitenDay').on('change', function() { $('[name=時間] option[value="11:00"]').prop('disabled', $(this).val() == "5月6日"); }); }); });
困っているところ
それぞれの処理はうまく行くのですが、一度京都会場を選んだ後に大阪会場を選ぶと京都会場の処理が引き継がれてしまいます。(京都会場を選んだ時のみ4月29日の10:00を選択不可にしたいが、大阪会場を選んだ時にも4月29日の10:00が選択不可になっている)
別のラジオボタンを押した時に処理を引き継がないようにしたい。
自分なりに試したこと
調べたところクリックごとにイベントをリセットしなければいけないとわかったので.off()を試したところうまくいかず………
どなたかご教授のほど、よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/07 09:48
2020/04/07 09:48
2020/04/08 01:16
2020/04/08 05:03
2020/04/08 05:41