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, время: 01:00. |