Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   Сумма checkbox + type="text" (https://javascript.ru/forum/css-html/55955-summa-checkbox-type%3D-text.html)

kristow 22.05.2015 16:11

Сумма checkbox + type="text"
 
Добрый день.
Подскажите пожалуйста как мне посчитать сумму в <output> при выборе чекбоксов?
И еще как сделать проверку на включение type="checkbox", чтобы если включен, то в сложение сумм учитывать type="text" ?
<table border="1" width="100%" bgcolor="#FFFF00">
	<tr><form name="Sum">
		<td colspan="2" align="center"><b><font size="4">Итого за  оборудование = <output id="rezultat" name="rezultat">0</output> руб.</font></b></td>
	</tr>
	<tr>
		<td><label><input type="checkbox" name="vibor" value="15200">Прибор1 = 15200 руб.</label>
			<label><p><input type="checkbox" name="vibor" value="3500">Прибор2 = 3500 руб.</p></label>
			<label><p><input type="checkbox" name="vibor" value="1500">Прибор3 = 1500 руб.</p></label>
		</td>
		<td><label><input type="checkbox" name="vibor" value="15200">Прибор4 = 15200 руб.</label>
			<label><p><input type="checkbox" name="vibor" value="3500">Прибор5 = 3500 руб.</p></label>
			<label><p><input type="checkbox" name="vibor" value="1500">Прибор6 = 1500 руб.</p></label>
			<label><p><input type="checkbox" name="vibor" value="ON">Дополнительно:&nbsp; <input type="text" name="vibor2" size="20">руб.</p></label>
		</td></form>
	</tr>
</table>


Скрипт почему-то не работает...
<script>
var s = document.forms.Sum,
    d = s.querySelectorAll('input[type="checkbox"]:not([value]), input[type="checkbox"][value=""]');
  for (var i = 0; i < d.length; i++) // чтобы не было написано NaN, убираем в disabled пункты, где не прописаны значения
    d[i].disabled = true;
s.onchange = function() { // начало работы функции сложения
  var n = s.querySelectorAll('[type="checkbox"]'),
      itog = 0;
  for(var j=0; j<n.length; j++)
    n[j].checked ? itog += parseFloat(n[j].value) : itog;
    document.getElementById('rezultat').innerHTML = itog;
}
</script>

рони 22.05.2015 16:40

kristow,
нельзя форму резать строками!!!
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
</head>

<body>
<form name="Sum">
<table border="1" width="100%" bgcolor="#FFFF00">
	<tr>
		<td colspan="2" align="center"><b><font size="4">Итого за  оборудование = <output id="rezultat" name="rezultat">0</output> руб.</font></b></td>
	</tr>
	<tr>
		<td><label><input type="checkbox" name="vibor" value="15200">Прибор1 = 15200 руб.</label>
			<label><p><input type="checkbox" name="vibor" value="3500">Прибор2 = 3500 руб.</p></label>
			<label><p><input type="checkbox" name="vibor" value="1500">Прибор3 = 1500 руб.</p></label>
		</td>
		<td><label><input type="checkbox" name="vibor" value="15200">Прибор4 = 15200 руб.</label>
			<label><p><input type="checkbox" name="vibor" value="3500">Прибор5 = 3500 руб.</p></label>
			<label><p><input type="checkbox" name="vibor" value="1500">Прибор6 = 1500 руб.</p></label>
			<label><p><input type="checkbox" name="vibor" value="ON">Дополнительно:&nbsp; <input type="text" name="vibor2" size="20">руб.</p></label>
		</td>
	</tr>
</table>
</form>
<script>
var s = document.forms.Sum,
    d = s.querySelectorAll('input[type="checkbox"]:not([value]), input[type="checkbox"][value=""]');
  for (var i = 0; i < d.length; i++) // чтобы не было написано NaN, убираем в disabled пункты, где не прописаны значения
    d[i].disabled = true;
s.onchange = function() { // начало работы функции сложения
  var n = s.querySelectorAll('[type="checkbox"]'),
      itog = 0;
  for(var j=0; j<n.length; j++)
    n[j].checked && (itog += +n[j].value || +s.vibor2.value || 0);
    document.getElementById('rezultat').innerHTML = itog;
}
</script>


</body>

</html>

kristow 22.05.2015 17:03

да, косяк, спасибо...

kristow 22.05.2015 17:15

Подскажите как можно сохранять выбранные значения?
т.е. я в таблицу mysql хочу сохранять в виде строки состояние чекбоксов, чтоб при загрузке страницы их же восстановить (включить нужные).
Работа с mysql через php, тут все работает.
А как методом javascript собрать значения включенных чекбоксов? И как из строки их же активировать при загрузке страницы?

рони 22.05.2015 17:18

kristow,
не подскажу, ждите гуру.

kristow 25.05.2015 09:20

up

kristow 25.05.2015 09:21

Цитата:

Сообщение от kristow (Сообщение 371958)
Подскажите как можно сохранять выбранные значения?
т.е. я в таблицу mysql хочу сохранять в виде строки состояние чекбоксов, чтоб при загрузке страницы их же восстановить (включить нужные).
Работа с mysql через php, тут все работает.
А как методом javascript собрать значения включенных чекбоксов? И как из строки их же активировать при загрузке страницы?

up

рони 25.05.2015 11:42

Цитата:

Сообщение от kristow
А как методом javascript собрать значения включенных чекбоксов? И как из строки их же активировать при загрузке страницы?

http://javascript.ru/forum/misc/5518...tml#post367097

kristow 25.05.2015 11:59

Спасибо, решение уже нашел.


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