Как сделать так, чтобы переключатель не отмечался, нажав на него?

В отличие от флажков, пользователь не может отменить выбор радиокнопок после их нажатия. Есть ли способ, чтобы их можно было переключать программно с помощью Javascript? Это было бы предпочтительно без использования jQuery.

Ответы на вопрос(15)

это так же просто, как вы видите ниже.

 $('#radio1').iCheck('uncheck');
 06 апр. 2018 г., 10:44
снять флажок переключателя для реализации плагина ад нах

как определено их общимname приписывать. Затем щелчок по одному из них отменяет выбор текущего выбранного. Чтобы разрешить пользователю отменять & # x201C; real & # x201D; сделав выбор, вы можете включить переключатель, который соответствует нулевому выбору, например & # x201C; Не знаю & # x201D; или & # x201C; Нет ответа & # x201D ;.

Если вы хотите одну кнопку, которая может быть отмечена или не отмечена, используйте флажок.

Можно (но обычно не актуально) снимать флажок в JavaScript, просто установив егоchecked свойство ложно, например

<input type=radio name=foo id=foo value=var>
<input type=button value="Uncheck" onclick=
"document.getElementById('foo').checked = false">
 22 окт. 2017 г., 18:06
Что делать, если вы хотите, чтобы несколько кнопок действовали как группа, сохраняя при этом непроверенную опцию (или, по крайней мере, внешний вид одной из них)? ваше решение игнорирует конечного пользователя и требует по существу переписать существующий код ...

function uncheck_radio_before_click(radio) {
    if(radio.prop('checked'))
        radio.one('click', function(){ radio.prop('checked', false); } );
}
$('body').on('mouseup', 'input[type="radio"]', function(){
    var radio=$(this);
    uncheck_radio_before_click(radio);
})
$('body').on('mouseup', 'label', function(){
    var label=$(this);
    var radio;
    if(label.attr('for'))
        radio=$('#'+label.attr('for')).filter('input[type="radio"]');
    else
        radio=label.children('input[type="radio"]');
    if(radio.length)
        uncheck_radio_before_click(radio);
})

http://jsfiddle.net/24vft2of/2/

потому что у меня была та же проблема. Я хотел представить параметры пользователю, оставив возможность оставаться пустым. Хотя это возможно для явного кодирования с использованием флажков, которые могут усложнить работу сервера.

Пользователь Control + click почти так же хорош, как если бы он снял его с консоли. Поймать музада рано, а онклик - слишком поздно.

Ну, наконец, вот решение! Просто поместите эти несколько строк один раз на странице, и вы сделаете это для всех переключателей на странице. Вы можете даже возиться с селектором, чтобы настроить его.

window.onload = function(){
document.querySelectorAll("INPUT[type='radio']").forEach(function(rd){rd.addEventListener("mousedown",
	function(){
		if (this.checked) {this.onclick=function(){this.checked=false}} else{this.onclick=null}
	})})}
<input type=radio name=unchecksample> Number One<br>
<input type=radio name=unchecksample> Number Two<br>
<input type=radio name=unchecksample> Number Three<br>
<input type=radio name=unchecksample> Number Four<br>
<input type=radio name=unchecksample> Number Five<br>

адаптация из jquery тривиальна ... с помощью этого метода вы можете проверить наличие & quot; null & quot; оценить и передать его ...

var checked_val = "null";
$(".no_option").on("click", function(){
  if($(this).val() == checked_val){
  	$('input[name=group][value=null]').prop("checked",true);
    checked_val = "null";
  }else{
  	checked_val = $(this).val();
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type="radio" name="group" class="no_option" value="0">option 0<br>
<input type="radio" name="group" class="no_option" value="1">option 1<br>
<input type="radio" name="group" class="no_option" value="2">option 2<br>
<input type="radio" name="group" class="no_option" value="3">option 3<br>
<input type="radio" name="group" class="no_option" value="4">option 4<br>
<input type="radio" name="group" class="no_option" value="5">option 5<br>
<input type="radio" name="group" class="no_option" value="6">option 6<br>
<input type="radio" name="group" class="no_option" value="null" style="display:none">

чтобы разрешить множественные независимые группы переключателей и более точный способ назначения прослушивателей событий нескольким элементам ...

window.onload = function() {

    var acc_checked=[];

    [].slice.call(document.querySelectorAll('.accordion input[type="radio"]')).forEach(function(el,i){
        /**
         * i represents the integer value of where we are in the loop
         * el represents the element in question in the current loop
         */
        el.addEventListener('click', function(e){

            if(acc_checked[this.name] != this) {
                acc_checked[this.name] = this;
            } else {
                this.checked = false;
                acc_checked[this.name] = null;
            }

        }, false);

    });

}
Решение Вопроса

checked вfalse как это:

document.getElementById('desiredInput').checked = false;

Пример JavaScript

Пример jQuery

PS: удерживайтеCtrl ключ снять.

 04 июн. 2012 г., 08:45
@JohnSawatzky уверен, просто снимите чекif(e.ctrlKey) {...
 Student04 июн. 2012 г., 08:34
Это похоже на то, что мне нужно, но есть ли способ сделать это без необходимости нажатия Ctrl? Спасибо!
 05 окт. 2018 г., 16:39
Есть ли способ сказать, если определенная радиокнопка уже выбрана / истина, и по ней снова нажимают, чтобы затем переключить ее на отмену выбора / ложь и сделать это поведением по умолчанию для всех типов = & quot; radio & quot; элементы в документе? Я спрашиваю, потому что, если пользователь находится на планшете или на сенсорном экране, удерживать нажатой клавишу CTRL не очень легко.
 17 июл. 2016 г., 09:22
@pinkpanther, Абсолютно нет. Я думаю, что это полная сложность в этой проблеме. Удалитьif ctrlKeyи ... ну, вы можете снять его ... но вы никогда не сможете проверить радио, потому что [click] target-target 'schecked имуществоwill always show as checked.
 02 дек. 2015 г., 12:32
@ Тенефф, нет способа заставить его проверить

checked свойство переключателя, чтобы снять его.

Что-то вроде этого:

<script>
 function uncheck()
 {
  document.getElementById('myRadio').checked = false;        
 }
 function check()
 {
  document.getElementById('myRadio').checked = true;        
 }
</script>
<input id="myRadio" type="radio" checked="checked"/>
<button onclick="uncheck();">Uncheck</button>
<button onclick="check();">Check</button>

& # x200B; Смотрите это в действии здесь:http://jsfiddle.net/wgYNa/

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<input name="radio" type="radio" id="myRadio" value="myRadio" checked="checked"     onclick="setRadio(this)" />
<label for="myRadio"></label>


<script language="javascript">
function setRadio(obj) 
{
    obj.checked = false;
}
</script>
</body>
</html>

их гораздо прощеgetElementsByName( ' ' ); в вашем теге сценария. Это вернет массив, поместит прослушиватель событий в каждый дочерний массив и установит состояние проверки. Посмотрите на этот образец.

var myRadios = document.getElementsByName('subscribe');
var setCheck;
var x = 0;
for(x = 0; x < myRadios.length; x++){

    myRadios[x].onclick = function(){
        if(setCheck != this){
             setCheck = this;
        }else{
            this.checked = false;
            setCheck = null;
    }
    };

}

В этом руководстве объясняется, как код работает с визуальной демонстрацией.

 23 апр. 2018 г., 13:21
Этот скрипт абсолютно ничего не делает.setCheck переменная здесь ничего не значит.

  obj.check2 = false;    // add 'check2', a user-defined object property
  obj.onmouseup = function() { this.check2 = this.checked };
  obj.onclick = function() { this.checked = !this.check2 };

$(document)
// uncheck it when clicked
.on("click","input[type='radio']", function(){ $(this).prop("checked",false); })
// re-check it if value is changed to this input
.on("change","input[type='radio']", function(){ $(this).prop("checked",true); });

Ограничения:

Require form element Must trigger click event when changing radio button programmatically

(function($) {
  $.fn.uncheckableRadio = function() {
    var $root = this;
    $root.each(function() {
      var $radio = $(this);
      if ($radio.prop('checked')) {
        $radio.data('checked', true);
      } else {
        $radio.data('checked', false);
      }
        
      $radio.click(function() {
        var $this = $(this);
        if ($this.data('checked')) {
          $this.prop('checked', false);
          $this.data('checked', false);
          $this.trigger('change');
        } else {
          $this.data('checked', true);
          $this.closest('form').find('[name="' + $this.prop('name') + '"]').not($this).data('checked', false);
        }
      });
    });
    return $root;
  };
}(jQuery));

$('[type=radio]').uncheckableRadio();
$('button').click(function() {
  $('[value=V2]').prop('checked', true).trigger('change').trigger('click');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<form>
  <label><input name="myRadio" type="radio" value="V1" /> R1</label>
  <label><input name="myRadio" type="radio" value="V2" /> R2</label>
  <label><input name="myRadio" type="radio" value="V3" /> R3</label>
  <button type="button">Change R2</button>
</form>

но только для селекторов, добавив и удалив класс, поэтому вы можете легко заменить его на чистые селекторы JS и чистый атрибут JS add)

<input type='radio' name='radioBtn'>
<input type='radio' name='radioBtn'>
<input type='radio' name='radioBtn'>

$(document).on("click", "input[name='radioBtn']", function(){
    thisRadio = $(this);
    if (thisRadio.hasClass("imChecked")) {
        thisRadio.removeClass("imChecked");
        thisRadio.prop('checked', false);
    } else { 
        thisRadio.prop('checked', true);
        thisRadio.addClass("imChecked");
    };
})
 12 мая 2016 г., 23:18
Меня устраивает. За исключением того, что, когда я нажимаю на неконтролируемую радиокнопку, чтобы выбрать ее, я должен нажать на нее дважды, чтобы ее можно было проверить. Первый клик, чтобы снять галочку с того, который отмечен, а второй - чтобы проверить тот, который я хочу проверить :).
 22 окт. 2017 г., 17:44
мне потребовалось около трех секунд, чтобы придумать тот же (концептуальный) ответ ... сделал скрипку, чтобы показать, что это работает ... я уверен, что чистый javascript может быть использован для того же, просто не делайте этого хочу потратить время, чтобы сделать это ...Working Example
 17 июл. 2016 г., 09:39
Послушайте, потратив [много] времени на решение этой проблемы в двух разных аспектах + фреймворки + реализации,this is [likely] the only feasible answer, С помощьюclickпросто не работает, потому что.checked всегда верно;mousedown не работает, потому чтоmouseup разрушает это - даже сe.preventDefault();e.stop[Immediate]Propagation();; следующая лучшая техникаe.ctrlKey упомянутый выше подход - но это требует определенных специальных знаний от пользователя.The only way is [likely] using some sort of sentinel such as a class or data-checked, Докажите, что я не прав, пожалуйста !!!

где целесообразно снимать флажки с переключателей, кроме как с помощью нового выбора. У меня есть словарь, записи которого могут быть выбраны с использованием различных индексов. Какой индекс использовать, выбирается с помощью набора переключателей. Тем не менее, существует также «случайная запись» Кнопка, которую пользователь может использовать, если он или она просто хочет просмотреть. Оставление индекса на месте, когда запись была выбрана с помощью кнопки произвольного ввода, будет вводить в заблуждение, поэтому, когда эта кнопка нажата, я снимаю флажок со всех переключателей выбора индекса и заменяю содержимое фрейма индекса пустой страницей ,

 17 июл. 2016 г., 10:04
Или действительно, в любое время радиоnot required="required", В противном случае вам придется либо отправить значение на сервер и предположить, что каждый пользователь хорошо продумал & amp; трудно взаимодействовать с этой радиогруппой и потенциальными последствиями того, что может сделать сервер, или предоставить радиокнопку дляI selected an option, and then realized I don't care, but since radios can't be unchecked then this is the only option I'm left with, Или сброс Web 1.0.

Ваш ответ на вопрос