У меня есть два вопроса в форме с переключателями для Option1
и Option2
, и я использую jQuery, чтобы показать / скрыть дополнительные вопросы в скрытых элементах <div>
. Если вы ответите «Да» на Вариант 1, появится первое условное <div>
с дополнительным вопросом о Варианте 2. Если ответ на Вариант 2 - «Да», то появится второе условное <div>
с дополнительными вопросами.
Если пользователь изменяет вопрос Варианта 1 на «Нет» после выбора «Да», я скрою второе условное <div>
. Однако, если пользователь снова выбирает «Да» для варианта 1, ответ для варианта 2 остается «Да», но второе условное условие <div>
не отображается, потому что нет события change
- пользователю придется выбрать « Нет, затем снова «Да», чтобы показать второе условное выражение <div>
.
Я не уверен, как с этим справиться с помощью кода, нужно ли мне пытаться сбросить состояние переключателя или обработать его в каком-то другом мода. Любые советы приветствуются.
Вот мой jQuery код для условий отображения / скрытия:
<script type="text/javascript">
$(document).ready(function () {
$("input[name='Option1']").on ( "change", function() {
if (this.value == "Yes") {
$('#option1Display, #option1Display input').show().removeAttr("disabled");
}
else {
$('#option1Display, #option1Display input,\
#option2Display, #option2Display input').hide().attr("disabled", "disabled");
}
});
$("#option1Display, #option1Display input").hide().attr("disabled", "disabled");
});
</script>
<script type="text/javascript">
$(document).ready(function () {
$("input[name='Option2']").on ( "change", function() {
if (this.value == "Yes") {
$('#option2Display, #option2Display input').show().removeAttr("disabled");
}
else {
$('#option2Display, #option2Display input').hide().attr("disabled", "disabled");
}
});
$("#option2Display, #option2Display input").hide().attr("disabled", "disabled");
});
</script>
РЕДАКТИРОВАТЬ: Извините, моя разметка выполняется через CMS, которая производит много элементов <div>
с различными классами CSS, но я попытаюсь воспроизвести приведенную ниже разметку с помощью:
<div>
<label>Option 1 Question</label>
<ol>
<li>
<label>
<input name="Option1" type="radio" value="No">
No
</label>
</li>
<li>
<label>
<input name="Option1" type="radio" value="Yes">
Yes
</label>
</li>
</ol>
</div>
<div id="option1Display"><!--jQuery inserts disabled="disabled" and style="display: none;" into <div>-->
<label>Option 2 Question</label>
<ol>
<li>
<label>
<input name="Option2" type="radio" value="No"><!--jQuery inserts disabled="disabled" and style="display: none;" into <input>-->
No
</label>
</li>
<li>
<label>
<input name="Option2" type="radio" value="Yes"><!--jQuery inserts disabled="disabled" and style="display: none;" into <input>-->
Yes
</label>
</li>
</ol>
</div>
<div id="option2Display"><!--jQuery inserts disabled="disabled" and style="display: none;" into <div>-->
<!--Additional questions-->
</div>
Шаги для вопросов:
- Пользователь выбирает «Да» для
Option1
. option1Display
отображается пользователю с Option2
вопросом. - Пользователь выбирает «Да» для
Option2
. option2Display
отображается пользователю с дополнительными вопросами. - Если пользователь меняет свой ответ для
Option1
на «Нет», оба option1Display
и option2Display
скрываются. - Предположим, что пользователь никогда не менял свой ответ для
Option2
обратно на «Нет», поэтому «Да» по-прежнему выбрано, хотя option2Display
теперь снова скрыт. - Если пользователь теперь снова меняет свой ответ на
Option1
обратно на «Да ", option1Display
отображается, и ответ на Option2
-" Да "; однако option2Display
по-прежнему скрыт, если пользователь не изменит свой ответ обратно на «Нет», а затем на «Да».
Я бы хотел обработать это правильно. Надеюсь, это понятно. Извините, если это не так, я не программист по профессии и все еще изучаю этот материал. Заранее спасибо.