Самый простой способ, которым я мог придумать, это сделать следующее:
$('input:checkbox').change(
function(){
var group = this.name;
$(this).siblings('input:checkbox[name="'+ group + '"][checked]').removeProp('checked');
});
JS Fiddle demo .
Однако есть некоторые предостережения, приведенные выше используют removeProp()
, который ограничен jQuery 1.6 (и выше, предположительно). До 1.6 должна быть возможность заменить removeAttr('checked')
вместо
Пожалуйста, пересмотрите, используя <input type="radio" />
элементы, это точно , для чего они предназначены для работы и работы.
<ч />
Отредактировано после комментария Роберта (в комментариях ниже):
У меня все получилось, как и планировалось, НО ... в моей форме у меня есть другая группа флажков, и они также получают ограничение, хотя у них совершенно разные имена. Но мне нужно, чтобы пользователь мог выбрать более одного из этих флажков. Кажется, что скрипт влияет на все группы флажков. Я на самом деле думал, что, добавив name = "'+ group +'", можно ограничить функцию теми флажками, имя которых начинается со слова "группа". Но, похоже, это не так.
Селектором, который назначает обработчик событий change
, является $('input:checkbox')
, который устанавливает / применяет к всем флажкам на странице.
Чтобы применить его только к тем флажкам в определенной группе, вы можете использовать:
$('input:checkbox[name="checkboxGroupName"]').change(
function(){
$(this).siblings().removeProp('checked');
});
Ссылки: