Есть три чекбокса.
Нужно сделать так, чтобы если активен первый чекбокс, то убирались галочки со второго и третьего, а если второй или третий активный - убиралась галочка с первого.
Вот что у меня получилось:
$('.food_in_tour input:checkbox').change(function() {
if ($('#eat_all').prop('checked')) {
if ($('#not_meat').prop('checked') || $('#not_sugar').prop('checked')) {
$('.food_in_tour input:checkbox:not(#eat_all)').prop('checked', false);
}
} else if ($('#not_meat').prop('checked') || $('#not_sugar').prop('checked')) {
if ($('#eat_all').prop('checked')) {
$('#eat_all').prop('checked', false);
}
}
});
В чем ошибка, и как это можно реализовать?
Ответ
Нужно проверять какой checkbox был нажат, а не состояние checkbox-ов после нажатия.
Если нажали на #eat_all, то убираем выделение с других checkbox-ов. Если нажали на какой-то другой - убираем с #eat_all
Проверку можно делать, например, с помощью ID checkbox-a:
$('.food_in_tour :checkbox').change(function() {
if (this.id == "eat_all") {
$('.food_in_tour :checkbox:not(#eat_all)').prop("checked", false);
}
else {
$("#eat_all").prop("checked", false);
}
});
Комментариев нет:
Отправить комментарий