убрать checked с radiobutton
Есть группа radiobutton из 3-х элементов. По умолчанию ни один не выбран. Нужно чтобы после того как будет выбран один из них, можно было отключить checked повторным кликом. Чтобы снова ни один не был выбран.
|
element.disabled = true; |
Цитата:
|
Цитата:
Цитата:
Тестовый пример где? Что делал сам? |
element.checked = true или false
а по поводу отмены, сделайте кнопку(если такой вариант устроит) и для каждого радиобатона из набора - .checked = false или я чет перепутал?)) |
Фишка в том что checked ставится уже после onclick. Вариантов конечно много, но красивых я не вижу чёт.)
|
Цитата:
|
Тфу ты ё-моё не то хотел сказать. После mouseup.
|
agert,
Вариант ... <script type="text/javascript"> var a,b; function foo(c) { if (a != c) {b = 0;a = c}; b ^= 1; c.checked = b }; </script> <input type="radio" name="r" value="1" onclick="foo(this)"/> <input type="radio" name="r" value="2" onclick="foo(this)"/> <input type="radio" name="r" value="3" onclick="foo(this)"/> |
Цитата:
if (a != c) {b = 0;a = c}; b ^= 1; c.checked = b Больше всего не понимаю зачем b возводить в первую степень. |
Цитата:
if (b === 0) b = 1; else b = 0; Далее: Мы проверяем, на какой элемент кликнули в последний раз, а на какой сейчас. Если они совпадают, то меняем checked. |
agert,
b ^= 1; это не степень это исключающее или http://javascript.ru/bitwise-operators способ установления переменной в 1 или true -- затем в 0 или false и т.д. Алгоритм такой : Если кнопка ранее не нажималась установить переменную b в ноль , в переменной a запомнить какая кнопка нажата . потом установить значение checked согласно тригеру b. b ^= 1; или b = b ^ 1; это можно заменить данном случае на b=!b; |
вот более простой для понимая вариант
<!DOCTYPE HTML> <html> <head> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script> <script src="my.js"></script> </head> <body> <input type="radio" class="radio" name="group"> <input type="radio" class="radio" name="group"> <script type="text/javascript"> $('.radio').bind({ 'mouseup': function(){ $(this).data('prv-checked', this.checked); }, 'click': function(){ this.checked = ! $(this).data('prv-checked'); } }); </script> </body> </html> а вот вариант рони до минимизации <!doctype html> <html> <body> <input type="radio" class="radio" name="group"> <input type="radio" class="radio" name="group"> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script> <script type="text/javascript"> var prvEl, prvChecked; $('.radio').click(function(){ if (prvEl != this) { prvChecked = false; prvEl = this; } this.checked = ! prvChecked; prvChecked = ! prvChecked; }); </script> </body> </html> а для тех, кого интересует практическая сторона задачи, стоит подумать над вопросом, который задал Артемий Лебедев Сергею Чикуенку: "Как пользователь поймет, что оно так работает?" |
Ну да, для рядового юзера куда проще что-то типа:
<label><input type="radio" name="group" checked>Ничего</label><br> <label><input type="radio" name="group">Пиво</label><br> <label><input type="radio" name="group">Водка</label> И тут уж выбирать надо что важней, дизайн и фишки или колличесьво человек не забивших на заполнение.) |
А как сделать чтоб рядом выводилось, после выбора, рядом значение "1","2" или "3" в отдельной строке?
Буду очень благодарен! <label><input type="radio" name="group" checked="checked" />Ничего "1"</label><br /> <label><input type="radio" name="group" />Пиво "2"</label><br /> <label><input type="radio" name="group" />Водка "3"</label> |
Stolarate,
:write: <!DOCTYPE HTML> <html> <head> <title>Untitled</title> <meta charset="utf-8"> <style type="text/css"> span{ display: none; width: 40px; text-align: right; } label input:checked ~ span { display: inline-block; } </style> </head> <body> <label><input type="radio" name="group" checked="checked" />Ничего "1"<span>1</span></label><br /> <label><input type="radio" name="group" />Пиво "2"<span>2</span></label><br /> <label><input type="radio" name="group" />Водка "3"<span>3</span></label> </body> </html> |
Часовой пояс GMT +3, время: 00:52. |