Как переключить radiobutton

скажем, это мой HTML:

<input type="radio" name="rad" id="Radio0" checked="checked" />
<input type="radio" name="rad" id="Radio1" />
<input type="radio" name="rad" id="Radio2" />
<input type="radio" name="rad" id="Radio4" />
<input type="radio" name="rad" id="Radio3" />

Как вы можете видеть, 1-й переключатель установлен. Мне нужен переключатель для функции переключения. Для EG. Если я снова нажму на radio0, все переключатели должны быть снят.

Как я могу этого достичь?

обновление: Я не хочу никаких лишних кнопок. Для EG. Я мог бы добавить кнопку и установить свойство checked для всех переключателей как false. Однако я этого не хочу. Я только хочу, чтобы моя форма состоят из этих 4 переключателей.

обновление: поскольку большинство людей не понимают, чего я хочу, позвольте мне попытаться перефразировать-Я хочу, чтобы переключатель работал в режиме переключения. Я дал одно и то же имя всем переключателям, поэтому это группа. Теперь я хочу, чтобы радиобутоны переключились сами. Например. если я нажму на radio0, он должен быть снят, если он установлен и проверен, если он не установлен.

5 ответов


проблема заключается в том, что как только переключатель нажат, его состояние изменяется, прежде чем вы сможете его проверить. Я предлагаю добавить пользовательский атрибут, чтобы отслеживать предыдущее состояние каждого радио, например:

$(function(){
    $('input[name="rad"]').click(function(){
        var $radio = $(this);

        // if this was previously checked
        if ($radio.data('waschecked') == true)
        {
            $radio.prop('checked', false);
            $radio.data('waschecked', false);
        }
        else
            $radio.data('waschecked', true);

        // remove was checked from other radios
        $radio.siblings('input[name="rad"]').data('waschecked', false);
    });
});

вам также нужно будет добавить этот атрибут в первоначально проверенную разметку радио

<input type="radio" name="rad" id="Radio0" checked="checked" data-waschecked="true" />

см. демо здесь:http://jsfiddle.net/GoranMottram/VGPhD/2/


Как только вы дадите имя 2 или более переключателей, они автоматически станут группой. В этой группе можно проверить только один переключатель. Вы уже достигли этого.


Я использую onClick (), как показано ниже для моих пользовательских радиостанций:

$(function(){
  // if selected already, deselect
  if ($(this).hasClass('selected') {
    $(this).prop('checked', false);
    $(this).removeClass('selected');
  }
  // else select
  else {
    $(this).prop('checked', true);
    $(this).addClass('selected');
  }
  // deselect sibling inputs
  $(this).siblings('input').prop('checked', false);
  $(this).siblings('input').removeClass('selected');
}

используя @Goran Mottram answer просто немного настроить его, чтобы удовлетворить случай, когда переключатели не являются братьями и сестрами.

$(".accordian-radio-button").click(function(){
    var wasChecked = true;
    if($(this).data('waschecked') == true){
        $(this).prop('checked', false);
        wasChecked = false;
    }
    $('input[name="ac"]').data('waschecked', false);
    $(this).data('waschecked', wasChecked);
})

<input class="accordian-radio-button" data-waschecked="false" type="radio" name="ac" id="a1" />

этот код решил мою проблему

$("[type='radio']").on('click', function (e) {
    var previousValue = $(this).attr('previousValue');
    if (previousValue == 'true') {
        this.checked = false;
        $(this).attr('previousValue', this.checked);
    }
    else {
        this.checked = true;
        $(this).attr('previousValue', this.checked);
    }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<label >Toogle radio button example</label>
<br />
<input type="radio" name="toogle_me" value="mango"> Blue </input>
<input type="radio" name="toogle_me" value="kiwi"> Green </input>
<input type="radio" name="toogle_me" value="banana"> Yellow </input>
<input type="radio" name="toogle_me" value="orange"> Orange </input>