Снимите флажок 1, когда флажок 2 установлен - PullRequest
2 голосов
/ 21 июня 2011

У меня довольно простой вопрос - я думаю, - но я не могу решить его самостоятельно.

У меня есть два флажка: один со значением Да, другой со значением №

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

Было бы здорово, если бы это можно было сделать в jQuery - но любая помощь подойдет:)

Заранее спасибо

Роберт

Ответы [ 5 ]

3 голосов
/ 21 июня 2011

Самый простой способ, которым я мог придумать, это сделать следующее:

$('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');
    });

Ссылки:

2 голосов
/ 21 июня 2011
$("#checkbox1").bind('click', function(){ $("#checkbox2").removeAttr('checked'); });
$("#checkbox2").bind('click', function(){ $("#checkbox1").removeAttr('checked'); });
1 голос
/ 21 июня 2011
    $('#checkbox_1').change(function() {

        if ($(this).is(':checked')) {
            $('#checkbox_2').prop('checked', false);
        }
        else {
            $('#checkbox_1').prop('checked', false);
            $('#checkbox_2').prop('checked', true);
        }
    });

    $('#checkbox_2').change(function() {

        if ($(this).is(':checked')) {
            $('#checkbox_1').prop('checked', false);
        }
        else {
            $('#checkbox_2').prop('checked', false);
            $('#checkbox_1').prop('checked', true);
        }
    });

Редактировать: теперь это должно работать: -)

0 голосов
/ 03 августа 2015
$( document ).ready(function() {
    $( ".checkbox1" ).click(function(event) {
    $(this).parents('tr').children('td').children('.todos').prop('checked', false); 
    });
    $( ".checkbox2" ).click(function(event) {
        $(this).parents('tr').children('td').children('.checkbox1').prop('checked', false); 
    });

В основном это означает, что когда флажок 1 установлен, а пользователь пытается установить флажок 2, флажок 1 будет снят.

0 голосов
/ 14 августа 2012
function ChkBoxClicked() {
    $("#chkBoxList_0").bind('click', function () { $("#chkBoxList_1").removeAttr('checked'); });
    $("#chkBoxList_1").bind('click', function () { $("#chkBoxList_0").removeAttr('checked'); }); 

    if (($('#chkBoxList_0').is(':checked')) || ($('#chkBoxList_1').is(':checked'))) {
        if ($('#chkBoxList_0').is(':checked')) { alert('chkBoxList_0'); return false; }
        if ($('#chkBoxList_1').is(':checked')) { alert('chkBoxList_1'); return false; }
    } else {
        alert('non of the chkBoxList'); return false;
    }
}

Вот как я это сделал

...