Поведение checkboxes как radio

 
0
 
JavaScript
ava
Guedda | 20.10.2011, 15:22
Добрый день.
Даже не представляю, как правильно описать проблему. Но постараюсь.
Есть приблизительно такой код:

<input type="checkbox" name="group1" value="first_element" />First element
<input type="checkbox" name="group1" value="second_element" />Second element
<input type="checkbox" name="group1" value="third_element" />Third element
<input type="checkbox" name="group2" value="first_element" />First element
<input type="checkbox" name="group2" value="second_element" />Second element
<input type="checkbox" name="group2" value="third_element" />Third element

Если бы это были type="radio", то в одной группе могла нажиматься только одна radio. Так вот мне необходимо реализовать такое же, только с чекбоксами (смысл в том, что в одной группе (чекбоксы с одним name) мог нажиматься только один чекбокс, а остальные удаляли свой checked). Это надо для того, чтобы пользователь мог удалить свои значения (так как эти чекбоксы не обязательны).
И я понимаю, что это надо реализовывать с помощью js, jQuery. А вот куда копать, даже не знаю.
Надеюсь, я вполне объяснил проблему. Буду рад любой помощи.

Заранее огромная благодарность.
Kommentare (4)
ava
kovalenko | 20.10.2011, 14:48 #
Привет


вот на чистом JS
for (i = 0; i < document.myform.group1.length; i++)
document.myform.group1[i].checked = false ;

вот на jquery
$("input:checkbox").removeAttr("checked");


оберни в функцию и повешай на change

ava
Guedda | 20.10.2011, 14:52 #
kovalenko123, видимо, Вы немного не поняли. В Вашем примере будут удаляться все checkedы у чекбоксов, а надо так (реальный пример):
- нажимаем на первый чекбокс первой группы он чеккед
- нажимаем на второй чекбокс первой группы. первый чекбокс чеккед удаляется, а второй ставится чеккед
- нажимаем на второй чекбокс первой группы. все чекбоксы первой группы !чеккед
и так далее.

später ergänzt:

jQuery('body :input').live('change', function(){
jQuery('[name=group1]').each (function() {
jQuery(this).removeAttr('checked');
// Что сюда написать? Как отследить, какой именно чекбокс нажат?
})

})


später ergänzt:
Сделал так:

jQuery('body :input').live('change', function() {
var chkbx;
if (jQuery(this).is(':checked')) {
chkbx = jQuery(this);
}
jQuery('[name=group1]').each (function() {
jQuery(this).removeAttr('checked');
if (chkbx) {
chkbx.attr('checked', 'checked');
}
})
})

Может есть варианты поизящнее?
ava
нуп | 20.10.2011, 15:29 #
Как то так

$('input[type=checkbox]').change(function() {
$('input[type=checkbox][name=' + $(this).attr('name') + ']').not($(this)).attr('checked', false);
});
ava
magelan | 20.10.2011, 21:45 #
Есть старый добрый вариант, вешается радиогруппа в которой есть 4й вариант "ничего из перечисленного". Дешево, сердито, главное железнобетонно работает даже на текстовых браузерах.
Registrieren Sie sich oder melden Sie sich an, um schreiben zu können.
Unternehmen des Tages
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Mitwirkende
advanced
Absenden