Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 25.05.2015, 09:53
Аватар для kristow
Аспирант
Отправить личное сообщение для kristow Посмотреть профиль Найти все сообщения от kristow
 
Регистрация: 26.02.2015
Сообщений: 49

checkbox + mysql
Привет всем.
Есть десяток checkbox, которые при активации выполняют суммирование значений. В этой теме спрашивал про суммирование: http://javascript.ru/forum/showthrea...206#post372206

Сейчас хочу сохранять в базу mysql сумму полученную и состояние checkbox, чтобы при открытии страницы увидеть какие чекбоксы были выбраны, и при необходимости выбрать другие и сохранить...

Работу с mysql делаю через php, тут все работает.
А строку из активных checkbox сохранять в скрытую <output>.
Помогите пожалуйста с этим...
Ответить с цитированием
  #2 (permalink)  
Старый 25.05.2015, 10:11
Аватар для kristow
Аспирант
Отправить личное сообщение для kristow Посмотреть профиль Найти все сообщения от kristow
 
Регистрация: 26.02.2015
Сообщений: 49

Сохранение значений в строку я придумал вот так:
s.onchange = function() { // начало работы функции сложения
  var n = s.querySelectorAll('[type="checkbox"]'),
	  save = '';
  for(var j=0; j<n.length; j++){
	n[j].checked ? save += n[j].name : save;

  }
	document.getElementById('a_radio').innerHTML = save;

В итоге я получаю строку в виде s1s2s5s8, которую записываю в базу mysql.
Далее я могу либо в html элемент, либо в значение переменной javascript записать из базы эту строку. А как читая строку включить нужные чекбоксы? Имя и id чекбокса одинаковые... s1,s2,...s8
Ответить с цитированием
  #3 (permalink)  
Старый 25.05.2015, 10:12
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

Сообщение от kristow
А строку из активных checkbox сохранять в скрытую <output>.
Помогите пожалуйста с этим...
Пройдись по всем checkbox и сделай строку их 0 и 1... Это если порядок checkbox всегда одинаков.
Ответить с цитированием
  #4 (permalink)  
Старый 25.05.2015, 10:14
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

Сообщение от kristow
В итоге я получаю строку в виде s1s2s5s8, которую записываю в базу mysql.
Такая запись напрочь убивает даже первую нормальную форму...
Ответить с цитированием
  #5 (permalink)  
Старый 25.05.2015, 10:16
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

Сообщение от kristow
А как читая строку включить нужные чекбоксы? Имя и id чекбокса одинаковые... s1,s2,...s8
Как вариант...

var str='s1s2s5s8';
alert(str.match(/s\d+/g));
Ответить с цитированием
  #6 (permalink)  
Старый 25.05.2015, 10:43
Аватар для kristow
Аспирант
Отправить личное сообщение для kristow Посмотреть профиль Найти все сообщения от kristow
 
Регистрация: 26.02.2015
Сообщений: 49

Сообщение от ksa Посмотреть сообщение
Как вариант...

var str='s1s2s5s8';
alert(str.match(/s\d+/g));
Массив я знаю как сделать...
Я затрудняюсь при загрузке страницы проставить чекбоксы нужные...
Помогите плиз...
Ответить с цитированием
  #7 (permalink)  
Старый 25.05.2015, 10:52
Аватар для kristow
Аспирант
Отправить личное сообщение для kristow Посмотреть профиль Найти все сообщения от kristow
 
Регистрация: 26.02.2015
Сообщений: 49

Вот мой пример кода.
Подскажите как его правильно дописать, чтобы при загрузке страницы проставить чекбоксы!
<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="s1" value="2632.58">Товар 1= 2632,58 руб.</label>
			<label><p><input type="checkbox" name="s2" value="6264.62">Товар 2 = 6264,62 руб.</p></label>
			<label><p><input type="checkbox" name="s3" value="6737.80">Товар 3 = 6737,80 руб.</p></label>
		</td>
		<td><label><input type="checkbox" name="s4" value="518.02">Товар 4 = 518,02 руб.</label>
			<label><p><input type="checkbox" name="s5" value="1139.88">Товар 5 = 1139,88 руб.</p></label>
			<label><p><input type="checkbox" name="s6" value="1139.88">Товар 6 = 1139,88 руб.</p></label>
			<label><p><input type="checkbox" name="s7" value="ON">Дополнительно:&nbsp; <input type="text" name="vibor2" size="20">руб.</p></label>
		</td>
	</tr>
	<tr>
		<td colspan="2" align="center"></td>
	</tr>
</table><output id="a_radio" name="a_radio">0</output></form><table><tr><td><input type="submit" value="Сохранить"></td><td><button type="button" onClick="history.back();">Отменить</button></td></tr></table>


var s = document.forms.Sum,
    d = s.querySelectorAll('input[type="checkbox"]:not([value]), input[type="checkbox"][value=""]');
	str='s1s2s5s7';
	asrt = str.match(/s\d+/g);
  for (var i = 0; i < d.length; i++) // чтобы не было написано NaN, убираем в disabled пункты, где не прописаны значения
    d[i].disabled = true;
  for (var i = 0; i < asrt.length; i++) 
    asrt[i].checked = true;
s.onchange = function() { // начало работы функции сложения
  var n = s.querySelectorAll('[type="checkbox"]'),
           itog = 0;
	  save = '';
  for(var j=0; j<n.length; j++){
        n[j].checked && (itog += +n[j].value || +s.vibor2.value || 0);
	n[j].checked ? save += n[j].name : save;

  }
	document.getElementById('a_radio').innerHTML = save;
    document.getElementById('rezultat').innerHTML = (itog).toFixed(2);
	
}
Ответить с цитированием
  #8 (permalink)  
Старый 25.05.2015, 11:04
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

Сообщение от kristow
Вот мой пример кода.
Классический вариант говнокодинга... Как хтмл, так и сам скрипт...

Сообщение от kristow
как его правильно дописать
Начнем с такого...

<!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>
<link rel='stylesheet type=text/css href=tmp.css' />
<link rel="stylesheet/less" type="text/css" href="style.less">
<script src="http://cdnjs.cloudflare.com/ajax/libs/less.js/2.5.0/less.min.js"></script>
-->
<style type='text/css'>
</style>
<script type='text/javascript'>
</script>
</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="s1" value="2632.58">Товар 1= 2632,58 руб.</label>
				<label><p><input type="checkbox" name="s2" value="6264.62">Товар 2 = 6264,62 руб.</p></label>
				<label><p><input type="checkbox" name="s3" value="6737.80">Товар 3 = 6737,80 руб.</p></label>
			</td>
			<td><label><input type="checkbox" name="s4" value="518.02">Товар 4 = 518,02 руб.</label>
				<label><p><input type="checkbox" name="s5" value="1139.88">Товар 5 = 1139,88 руб.</p></label>
				<label><p><input type="checkbox" name="s6" value="1139.88">Товар 6 = 1139,88 руб.</p></label>
				<label><p><input type="checkbox" name="s7" value="ON">Дополнительно:&nbsp; <input type="text" name="vibor2" size="20">руб.</p></label>
			</td>
		</tr>
		<tr>
			<td colspan="2" align="center"></td>
		</tr>
	</table>
	<output id="a_radio" name="a_radio">0</output>
</form>
<table>
	<tr>
	<td><input type="submit" value="Сохранить"></td>
	<td><button type="button" onClick="history.back();">Отменить</button></td>
	</tr>
</table>
<script type='text/javascript'>
var str='s1s2s5s7';
var a=str.match(/s\d+/g);
for (var i=0; i<a.length; i++) {
	document.getElementsByName(a[i])[0].checked=true;
};
</script>
</body>
</html>
Ответить с цитированием
  #9 (permalink)  
Старый 25.05.2015, 11:05
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

kristow, у тебя есть серверный скрипт! Ты в состоянии сгенерить страницу сразу в нужном виде.
Зачем ее еще и на клиенте доделывать?
Ответить с цитированием
  #10 (permalink)  
Старый 25.05.2015, 11:11
Аватар для kristow
Аспирант
Отправить личное сообщение для kristow Посмотреть профиль Найти все сообщения от kristow
 
Регистрация: 26.02.2015
Сообщений: 49

Хочу реализовать на javascript включение чекбоксов...
Вот такая функция по идее должна работать...
function init() {
	str='s1s2s5s7';
	asrt = str.match(/s\d+/g);
	for (var i = 0; i < asrt.length; i++){
		document.getElementById(asrt[i]).checked=true;
		document.getElementById(asrt[i]).click();
	}

}

Не пойму только как мне ее запустить после загрузки страницы...
Подскажите плиз.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
checkbox check если значение input djonA Общие вопросы Javascript 8 14.01.2014 06:44
проблема с checkbox Chrome Элементы интерфейса 1 23.10.2013 18:05
checkbox = checkbox Слейп jQuery 2 30.01.2013 15:24
jqgrid tree and checkbox gaz2003 jQuery 0 17.12.2011 15:59
Функция disable для нескольких checkbox allforweb Элементы интерфейса 4 19.12.2010 17:51