Как снять галочку с одной радио-кнопки, если она отключена другим радио?
JQuery новичок, здесь. Я не могу заставить это работать. Это то, что я использую, чтобы отключить переключатель на основе предыдущего переключателя.
$('document').ready(function() {
$('input[name="a"]').change(function() {
if($(this).val() == '1') {
$('input[name="b"]').removeAttr('disabled');
} else {
$('input[name="b"][value="1"]').attr('disabled','disabled');
}
});
});
а также:
<input type="radio" name="a" value="1" /> A-1
<input type="radio" name="a" value="2" /> A-2
<input type="radio" name="b" value="1" /> B-1
<input type="radio" name="b" value="2" /> B-2
Поэтому, если я проверил A-2, B-1 отключится. Но, скажем, сначала я проверил B-1, а затем я проверил A-2, и тогда я бы хотел, чтобы B-1 не проверялось. Я попытался добавить это в:
if($('input[name="b"][value="1"]').is(':disabled')) {
$('input[name="b"][value="1"]').removeAttr('checked');
}
Это делает работу, но это также снимает флажок B-2, если я проверил это сначала. Я только хочу, чтобы B-1 не проверяли. (Я надеюсь это имеет смысл.)
Что я делаю неправильно?
2 ответа
$('input[name="a"]').change(function () {
var $b = $('input[name="b"]');
if (this.value == 1) {
$b.removeAttr('disabled');
}
else {
$('input[name="b"][value="1"]:checked').removeAttr('checked'); // the selector behavior is funky here...
$b.attr('disabled', true);
}
});
это работает, как вы хотите.
Существует проблема с селектором [value="1"] thou (при использовании без: флажка), пахнет как ошибка jquery. Но не волнуйтесь об этом;)
В прошлом мне приходилось учиться чему-то подобному: хитрость в том, чтобы создать семейство радиокнопок:
family NAME
child ID0
child ID1
child IDn
В вашем конкретном случае вы можете искать что-то вроде этого (пол):
<input type="radio" name="gender" id='male' value="M" > Male
<input type="radio" name="gender" id='female' value"F" > Female
И, например, любит:
<input type="radio" name="likes" id='tv' value="TV" > Watchs TV
<input type="radio" name="likes" id='radio' value="radio" > Listens to Radio
Если у вас есть СЕМЬЯ радиокнопок, при нажатии одной из них, другая автоматически отключается.
Тогда вы можете проверить либо просто
$('#male').is(':checked') .... $('#female').is(':checked') .....
И вы также можете запустить любой из них отключенным или нет или отключить другой, нажав эту кнопку: $('#male'). Click();