Вот код надеюсь разберётесь там всё расписано.
Нужно посчитать чек боксы, но так как там есть такие поля для заполнения почты имени текста, скрипт не работает, вот и нужно как я предпологаю чисто по имени обратиться. |
Цитата:
Делай простенький, полностью хтмлный пример, без всяких там пхпшных вставок. |
хорошо, я с тобой полностью согласен!!!
|
Вот чисто пример маленький простой. Нужно обратиться по имени. а не по id
Щас буду тоже пробовать. И кстати там есть форма вот нужно что бы она там и осталась и независимо от колличества полей всё считалось. <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251 /"> <title>Привет</title> </head> <body> <script type="text/javascript"> function price(form){ var total = 0; for (var i = 1; i< form.elements.length; i++){ if (document.getElementById(i).checked) { var b=parseFloat(document.getElementById(i).value); } else { b=0; } total+=b; } document.getElementById("total_price").innerHTML=total; document.getElementById("total_prie").value=total; document.getElementById("total_pr").value=total; } </script> <form name="form" action="#" onclick="price(this)" method="post"> <input type="hidden" name="tot_pr" value="" id="total_pr" /> <table class="tablica"> <?php $names[]='<input type="checkbox" name="xz_1" value="100" id="1">'; $names[]='<input type="checkbox" name="xz_2" value="100" id="2">'; $names[]='<input type="checkbox" name="xz_3" value="100" id="3">'; foreach ($names as $value) { echo $value."<br>";} ?> <table align="left"> <tr> <td id='total_price' style='color: #993300;font-weight:bold; font-size:14px'></td> </tr> </table> <table align="center"> <tr> <td> <br><br> <p class="mail-zakaz"><p> Имя:<br /> <input type="text" name="name" size="40" ><br /> E-mail:<br /> <input type="text" name="pojta" size="40" ><br /> Тел:<br /> <input type="text" name="tel" size="40" ><br /> Сообщение:<br /> <textarea name="mess" rows="10" cols="40" ></textarea> <br /> <input id="total_prie" type='hidden' name="hi" value=""> <input type="submit" value="Отправить" name="submit"> </td> </tr> </table> </form> </body> </html> |
Цитата:
Тогда так <input type="checkbox" name="xz_1" value="100" id="1"> <script> alert(document.getElementsByName('xz_1')[0].checked) </script> |
klubnichkaaa, дай всем чекбоксам одно имя - можешь работь в цикле...
<input type="checkbox" name="xz" value="100" id="1">; <input type="checkbox" name="xz" value="100" id="2" checked>; <input type="checkbox" name="xz" value="100" id="3">; <script> var i,n=0 for (i=0; i<document.getElementsByName('xz').length; i++) { if (document.getElementsByName('xz')[i].checked) { n++ } } alert(n) </script> |
На работе порой некогда обдумать, написать схемки, протестить. Вообщем твой самый первый ответ и есть правильный. Я взял поменял обращение по id и всё встало на свои места, теперь форма для сообщения не конфликтует. И всё считает, я поместил скрипт в свой компонент его пришлось немного протестить так как он отказался работать но я быстро поправил всё! Но так как к имени у меня выводится xz_'.$raz_na->id.' номер в базе это для проверки чекбоксов и когда приходит письмо показывает что выбрал пользователь. вот надо теперь сделать к имени id буду дальше разбираться обязательно напишу как сделаю так что бы всё работало как надо! Ещё раз спасибо тебе! я тебе юбилейный + ставлю!
|
Цитата:
|
ksa доп вопрос!
Имя полей у меня не одинаково они всегда будут xz1 xz2 xz3 цифры это id из базы. вот скрипт я туда поставил rrr переменную и присвоил ей единицу. но она не увеличивается. и считает только первое поле. Как тогда прогнать значение и увеличить его!? <script type="text/javascript"> function price(form){ var total = 0; var rrr=1; for (i=0; i<document.getElementsByName('xz'+rrr).length; i++) { if (document.getElementsByName('xz'+rrr)[i].checked) { var b=parseFloat(document.getElementsByName('xz'+rrr)[i].value); rrr++} else { b=0; } total+=b; } document.getElementById("total_price").innerHTML=total; document.getElementById("total_prie").value=total; document.getElementById("total_pr").value=total;} </script> |
klubnichkaaa, какой-то странный у тебя алгоритм... Количество чекбоксов у тебя всегда одно и тоже?
Если так просто пройдись по ним. <input type="checkbox" name="xz1" value="100" id="1">; <input type="checkbox" name="xz2" value="100" id="2" checked>; <input type="checkbox" name="xz3" value="100" id="3">; <script> var i,max=3,n=0 for (i=0; i<max; i++) { if (document.getElementsByName('xz'+(i+1))[0].checked) { n++ } } alert(n) </script> |
Часовой пояс GMT +3, время: 02:57. |