Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Как убрать у одного checkbox checked и присвоить тому на который кликнула (https://javascript.ru/forum/dom-window/65895-kak-ubrat-u-odnogo-checkbox-checked-i-prisvoit-tomu-na-kotoryjj-kliknula.html)

nina_ 14.11.2016 10:24

Как убрать у одного checkbox checked и присвоить тому на который кликнула
 
Добрый день
Помогите, пожалуйста, разобраться почему не работает след.код:
есть div с checkbox-ами и первый checkbox в результате работы php скрипта имеет атрибут checked="checked":
<div class="choose_day">
<div class="checkbox-row">
<input type="checkbox" name="check" id="1" value="2017-06-01" checked="checked"><label for="1">2017-06-01</label>
</div>
<div class="checkbox-row"><input type="checkbox" name="check" id="2" value="2017-06-11"><label for="2">2017-06-11</label></div>
<div class="checkbox-row"><input type="checkbox" name="check" id="3" value="2017-06-21"><label for="3">2017-06-21</label></div>
<div class="checkbox-row"><input type="checkbox" name="check" id="4" value="2017-07-01"><label for="4">2017-07-01</label></div>
<div class="checkbox-row"><input type="checkbox" name="check" id="5" value="2017-07-11"><label for="5">2017-07-11</label></div>
</div>


Как правильно написать код, чтобы по клику на другой checkbox,
атрибут checked="checked" у предыдущего выбранного checkbox-а снимался?
$(".choose_day input:checkbox:enabled").click(function() {
    var top = $(this).parent().parent();
    var allCheckboxes = top.find("input:checkbox:enabled");
    allCheckboxes.removeAttr('checked');
    $(this).attr('checked', 'checked');
});

Данный код не работает, но я могу понять причину.

ksa 14.11.2016 10:43

Цитата:

Сообщение от nina_
Как убрать у одного checkbox checked и присвоить тому на который кликнула

Для этого есть "радио кнопки"... ;)

ksa 14.11.2016 11:12

Цитата:

Сообщение от nina_
но я могу понять причину

Для понятия причины нужно тестировать свой код "по шагам"... ;)

Мой вариант.

<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<script src='http://code.jquery.com/jquery-latest.js'></script>
<!--
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
-->
<style type='text/css'>
</style>
<script type='text/javascript'>
$(function(){
	$('.checkbox-row :checkbox').change(function(){
		if (!this.checked) return;
		$('.checkbox-row :checked').not(this).prop('checked',false);
	});
});
</script>
</head>
<body>
<div class="choose_day">
	<div class="checkbox-row">
		<input type="checkbox" name="check" id="1" value="2017-06-01" checked="checked"><label for="1">2017-06-01</label>
	</div>
	<div class="checkbox-row">
		<input type="checkbox" name="check" id="2" value="2017-06-11"><label for="2">2017-06-11</label>
	</div>
	<div class="checkbox-row">
		<input type="checkbox" name="check" id="3" value="2017-06-21"><label for="3">2017-06-21</label>
	</div>
	<div class="checkbox-row">
		<input type="checkbox" name="check" id="4" value="2017-07-01"><label for="4">2017-07-01</label>
	</div>
	<div class="checkbox-row">
		<input type="checkbox" name="check" id="5" value="2017-07-11"><label for="5">2017-07-11</label>
	</div>
</div>
</body>
</html>

nina_ 14.11.2016 11:44

Спасибо вам за помощь.
Не могла сообразить как присвоить атрибут выбранному checkbox.

ksa 14.11.2016 13:27

Цитата:

Сообщение от nina_
как присвоить атрибут

В моем примере работа идет не с атрибутом, а со свойством. :no:
http://javascript.ru/tutorial/dom/attributes


Часовой пояс GMT +3, время: 18:30.