Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Отмена действия при повторном клике на checkbox (https://javascript.ru/forum/jquery/62273-otmena-dejjstviya-pri-povtornom-klike-na-checkbox.html)

Lutsk 02.04.2016 16:04

Отмена действия при повторном клике на checkbox
 
Подскажите пожалуйста нубу, - как сделать чтоб при отметке чекбокса значение его value суммировалось со значением в #block, а со снятием галочки - вычиталось?
В таком виде только суммирует:
<div id="block">100</div>

<input id="option_1" type="checkbox" name="options[1]" value="200" onclick="setOption(this.value);" />
<input id="option_2" type="checkbox" name="options[2]" value="300" onclick="setOption(this.value);" />

function setOption(value){
	var data = $("#block").html();
	$("#block").html(parseInt(data)+parseInt(value));
}

рони 02.04.2016 16:26

Lutsk,
лучше бы конечно без
Цитата:

Сообщение от Lutsk
onclick

и
Цитата:

Сообщение от Lutsk
var data = $("#block").html();

...
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
   <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
</head>

<body>
<div id="block">100</div>

<input id="option_1" type="checkbox" name="options[1]" value="200" onclick="setOption(this);" />
<input id="option_2" type="checkbox" name="options[2]" value="300" onclick="setOption(this);" />
<script>
function setOption(obj){
	var data = $("#block").html();
	$("#block").html(parseInt(data)+parseInt(obj.value)*(obj.checked ? 1 : -1));
}

</script>
</body>

</html>

Lutsk 02.04.2016 16:27

Вот так вроде работает. Но может есть более правильное решение?
function setOption(id, value){
	var data = $("#block").html();
	if ($('#'+id).is(':checked')) {
		$("#block").html(parseInt(data) + parseInt(value));
	} else {
		$("#block").html(parseInt(data) - parseInt(value));
	}
}

laimas 02.04.2016 16:31

Цитата:

Сообщение от рони
лучше бы конечно без
Сообщение от Lutsk
onclick
и

и id="option_1", и name="options[1]"...


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