checkbox + mysql
Привет всем.
Есть десяток checkbox, которые при активации выполняют суммирование значений. В этой теме спрашивал про суммирование: http://javascript.ru/forum/showthrea...206#post372206 Сейчас хочу сохранять в базу mysql сумму полученную и состояние checkbox, чтобы при открытии страницы увидеть какие чекбоксы были выбраны, и при необходимости выбрать другие и сохранить... Работу с mysql делаю через php, тут все работает. А строку из активных checkbox сохранять в скрытую <output>. Помогите пожалуйста с этим... :write: |
Сохранение значений в строку я придумал вот так:
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 |
Цитата:
|
Цитата:
|
Цитата:
var str='s1s2s5s8'; alert(str.match(/s\d+/g)); |
Цитата:
Я затрудняюсь при загрузке страницы проставить чекбоксы нужные... Помогите плиз... |
Вот мой пример кода.
Подскажите как его правильно дописать, чтобы при загрузке страницы проставить чекбоксы! <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">Дополнительно: <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);
}
|
Цитата:
Цитата:
<!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">Дополнительно: <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>
|
kristow, у тебя есть серверный скрипт! Ты в состоянии сгенерить страницу сразу в нужном виде.
Зачем ее еще и на клиенте доделывать? :blink: |
Хочу реализовать на 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();
}
}
Не пойму только как мне ее запустить после загрузки страницы... Подскажите плиз. |
Цитата:
Поэтому и хочу через javascript, чтобы и чекбоксы подгружались и их сумма считалась... :write: |
Цитата:
|
Цитата:
window.onload=function(){
// Твой скрипт
};
|
вроде довел до ума...
Всем спасибо :) |
| Часовой пояс GMT +3, время: 16:32. |