Как снять галочку с одной радио-кнопки, если она отключена другим радио? - PullRequest
0 голосов
/ 13 ноября 2011

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 ]

1 голос
/ 13 ноября 2011
$('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. Но не волнуйтесь об этом;)

и маленькая скрипка для тебя ^^

0 голосов
/ 13 ноября 2011

Раньше мне приходилось учить что-то подобное в прошлом: хитрость в том, чтобы создать семейство радиокнопок:

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 ();

...