это маленький, но очень раздражает, сбой в моей форме.Флажки: отключаем меня!
У меня есть флажок, который, если щелкнуть, отображает другие флажки и поля ввода, чтобы пользователь мог добавить дополнительную информацию. Если этот триггерный флажок снят, дополнительные опции исчезают.
Однако (сюжет сгущается), если в форме установлен флажок, можно установить флажок триггера и указать дополнительные опции: , но если снят флажок, дополнительный вариант не исчезнет!
(Жаль, что долго наматывается, но я хотел быть ясно!)
Вот мой простой Jquery код:
$(function() {
var boxes = $('.obstruct-opt');
boxes.hide();
var ob = $('li.obstructionOptions').children().eq(0);
ob.change(function() {
if ($('$(this):checked').val()) {
boxes.show();
}
else {
boxes.hide();
}
});
});
Я пробовал разные способы проверки, если триггер проверяется или нет, но любые предложения приветствуются.
Редактировать HTML в соответствии с просьбой: (хотя упрощено мой ASP.Net управление ретранслятором генерируется его)
<ul>
<li class="obstructionOptions">
<span>
<input id="Obstruction" type="checkbox" name="Obstruction" />
<label for="Obstruction">Obstruction</label>
</span>
<span class="obstruct-opt">
<input id="WeatherProof" type="checkbox" name="WeatherProof"/>
<label for="WeatherProof">WeatherProof</label>
</span>
<span class="obstruct-opt">
<input id="WeatherProofFlap" type="checkbox" name="WeatherProofFlap"/>
</span>
</li>
<li class="obstruct-opt">
<span>Obstruction Notes</span>
<textarea name="ObstructionNotes" rows="7" cols="50" id="ObstructionNotes"/>
</li>
</ul>
Надеется, что это помогает!
Update: подставляя если условие
if ($(this).is(":checked")) {
ничего, ни появляющийся и исчезающий актов в поле зрения не вызывает. Спасибо за предложение tho, может быть, с моим html вы можете понять почему?
Обновление После публикации моего HTML я понял, что ASP.Net меня сшивает! Как вы можете видеть, я выбираю объект ob ob как первый ребенок, но первый ребенок является сгенерированным пролетом! ASP все это время обматывает мои флажки в прогонах, и я никогда не подозревал! проницательный!
Я использовал этот код в конце:
$('ul li.obstructionOptions span').children().eq(0).click(function() {
if ($(this).is(":checked")) {
boxes.show();
}
else {
boxes.hide();
}
});
Спасибо адамантия как это решается тычок отлично!
Проблема решена!
Не доверяйте ASP.Net моей разметкой !!!
Если элемент 'ob' является элементом флажка, вы также можете использовать' click' в отличие от 'change' из-за различий в кросс-браузере, когда возникает событие' change'. –
Отличный пост заголовка. +1 –
У меня есть спасибо! и повторно написал мое обновление, чтобы включить ваш ответ! спасибо за онлайн-демо! Отличная работа! –