Отменить выбор радиокнопки? [закрыто]


14

Я всегда задавался вопросом, есть ли какой-либо способ или хитрость, чтобы отменить выбор радиокнопки, как только вы выбрали один.

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

Когда вы нажимаете на переключатель, кажется, что отменить его невозможно, поэтому, если вы хотите оставить поле пустым, вы не сможете сделать это после того, как уже сделали выбор. Это как бы «заставляет» вас выбирать что-то.

ОБНОВЛЕНИЕ : Извините, я имел в виду радио кнопки, а не флажки, я перепутал термины.


2
Можете ли вы привести конкретный пример того, где вы видели это поведение? Обычно флажки позволяют вам ставить и снимать флажки.
тяжело

2
Я думаю, что вы говорите о радио кнопках?
fretje

@fretje: да, извините. я имел в виду радио кнопки
nmuntz

3
радиокнопки не могут быть отменены «по замыслу»
fretje

3
Если вы когда-либо сталкивались со старым автомобильным радиоприемником, предустановленные кнопки были физическими объектами, которые вам приходилось нажимать. Нажатие одной выталкивало другую. Было почти невозможно «отменить выбор» одного, не подталкивая другого. Я уверен, что отсюда и название "радио-кнопки".
эль

Ответы:


31

Вы думаете о переключателях:

группа круглых флажков, где только один может быть выбран за один раз

… И любой интерфейс, который не позволяет отключить группу переключателей, - это Doing it Wrong ™. Радиокнопки должны (в лучшем случае) начинаться с установленной по умолчанию опцией, не принимать ввод, если пользователь не сделал выбор, или (в худшем случае) предоставить кнопку, чтобы снять все отметки.

Если вы не можете жаловаться на дизайнера программного обеспечения или веб-сайта, вот букмарклет, который снимает флажки с каждой кнопки-переключателя на странице:

javascript:(function(){var%20inputs%20=%20document.getElementsByTagName(%27input%27);for(var%20i%20=%20inputs.length-1;i>=0;i--){if(inputs[i].getAttribute(%27type%27)===%27radio%27)inputs[i].checked=false}})()

... и вот версия, которая работает в консоли:

(function(){var inputs = document.getElementsByTagName('input');for(var i = inputs.length-1;i>=0;i--){if(inputs[i].getAttribute('type')==='radio')inputs[i].checked=false}})()

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


Я сталкиваюсь с этим время от времени с плохо продуманными онлайн-опросами. Я не смог запустить этот скрипт, так как он говорил « Неожиданный токен% » при запуске его в консоли Chrome. Вместо этого я использовал Chrome для редактирования html: нажмите F12. Нажмите маленькое увеличительное стекло слева, выберите радиокнопку (это должен быть liэлемент), затем щелкните правой кнопкой мыши окружающий ulэлемент и выберите « Редактировать как HTML» . Скопируйте один из других переключателей ( liэлементов) и вставьте его рядом с другими. Выберите его на странице, а затем отредактируйте ulснова, чтобы удалить переключатель.
Аске Б.

1
@AskeB. Я только добавил версию, которая работает в консоли!
s4y

7

Добавить переключатель под названием None


1
+1 Я бы так и сделал ... Радиокнопки не могут быть отменены «по замыслу»!
fretje

3

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

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


2
Это на самом деле не проблема, они должны требовать выбора. Они не должны использоваться, когда «нет ответа» является действительным.
Грег Д

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

1
+1 для решения CTRL, которое часто не известно
Gnoupi

0

Вы уверены, что не имеете в виду радио кнопку? Обычно вы можете снять флажок. Если вы обращаетесь к переключателю, самое близкое, о чем я могу подумать, это использование плагина панели инструментов dev для Firefox для очистки переключателей.
Меню> Формы> Очистить радио кнопки


да, извините, я имел в виду радио кнопки.
nmuntz

0

Редактировать:

Если это радио-кнопка, вы можете использовать этот образец Javascript или, возможно, сделать что-то с AutoHotKey, чтобы сделать свой собственный ярлык для него:

<script language="JavaScript">
<!--
function unCheckRadio(oRadio) {
      var or = document.getElementsByName(oRadio);
      for (var i = 0; i < or.length; i++) {
         or[i].checked = false;
     }
}
//-->
</script>

Больше не актуально, хотя и полезно:

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

альтернативный текст

Только сегодня я понял, что я не в курсе, какое сочетание клавиш стоит выбрать или снять флажок. Сделал немного Googling и обнаружил, что пробел используется для флажка. Вы можете встретить флажок в разных местах, таких как «Запомнить меня» или «Я принимаю политику», и во всех этих местах не забудьте использовать пробел, чтобы установить или снять флажок.


Примечание. Руководство по использованию клавиатуры Firefox упоминает, что переключатель не имеет опции переключения (вкл / выкл)
Ivo Flipse

Ну, это не очень полезно после того, как он отредактировал свой вопрос
Иво Флипс
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.