Подсчет данных формы при загрузке
Всем привет. Есть код;:
$(window).load(function() { $('input[name="k-less"]').change(function () { summ = $(this).val(); perhour = parseInt($('.kperhour').text(), 10); kurs = 65; console.log('summ '+summ+' perhour '+perhour+' kurs '+kurs+'') summ = summ*perhour*kurs; $('.k-cost').text(summ); function onlod (){ $('input[name="ik_am"]').val(summ); }; console.log('k-less'); }); }); Он считает по курсу с долара в рубли. Но результат подсчета выводиться только если в поле с количеством нажимать на стрелочки http://prntscr.com/gb0zob или же после ввода цифры и клика мышкой в любом месте. Я установил по умолчанию 1 а все равно выводит 0 Как сделать что бы сразу же при загрузке страницы считало? |
Цитата:
|
function myFunc() { $('input[name="k-less"]').change(function () { summ = $(this).val(); perhour = parseInt($('.kperhour').text(), 10); kurs = 65; console.log('summ '+summ+' perhour '+perhour+' kurs '+kurs+'') summ = summ*perhour*kurs; $('.k-cost').text(summ); function onlod (){ $('input[name="ik_am"]').val(summ); }; console.log('k-less'); }); } $('input[name="k-less"]').change(myFunc); wiodow.onload = myFunc; Код выше использую, так же не работает. Да, должно считать если даже не кто ничего не водил. Нужно считать по цифре в поле по умолчанию, стоит 1. |
Цитата:
Вы бы лучше код формы своей показали, а то не понять причем тут text() и для чего. А function onlod (){ ...., это какая-то абракадабра. |
<span class="wpcf7-form-control-wrap k-skype"><input type="text" name="k-skype" value="" size="40" class="wpcf7-form-control wpcf7-text wpcf7-validates-as-required"></span> </div> <div class="vlo2"> Количество занятий</div> <div class="put"> <span class="wpcf7-form-control-wrap k-less"><input type="number" name="k-less" value="1" class="wpcf7-form-control wpcf7-number wpcf7-validates-as-required wpcf7-validates-as-number" aria-invalid="false"></span> </div> <div class="clear"></div> <div class="vlo2 amm">Всего: </div> <div class="put amm2"> <span class="wpcf7-form-control-wrap k-cost strong gr">0</span></div> <form class="asd" method="post" action=""> <input type="hidden" name="ik_co_id" value=""> <input type="hidden" name="ik_cur" value="RUB"> <input type="hidden" name="ik_desc" value="lenword.com"> <input type="hidden" name="ik_x_name" value=""> <input type="hidden" name="ik_x_fam" value=""> <input type="hidden" name="ik_x_email" value=""> <input type="hidden" name="ik_x_skype" value=""> <input type="hidden" name="ik_x_prepod" value="<?php nazva(); ?>"> <input type="hidden" name="ik_x_less" value="1"> <?php $v = $wpdb->get_row( "SELECT * FROM kpays WHERE id=(SELECT MAX(id) FROM kpays)", ARRAY_A);?> <input type="hidden" name="ik_pm_no" value="<?php echo $v['id']+1; ?>"> <input id="paycost" type="hidden" name="ik_am" value="100"> <div class="clear"></div> <div class="c"> <button type="submit" class="button133j kinter"> Оплатить </button> </div> </form> |
Цитата:
В коде формы не видно '.kperhour' и того что на изображении. То что указано на изображении (курс валюты) ведь уже есть, зачем его считать, или же в поле формы это должно быть помещено? В таком случае почему сервер сразу не отдает форму с перерасчетом по курсу, а уже при вводе будет считать JS? |
<?php echo '<div class="cnt">Стоимость: <span class="kperhour">'?><?php echo cena();?><?php echo '</span><span class="pokur">Курс: 1$ = 55 руб.</span></div></div><div class="clear m10"></div>'?> <div class="vlo2"> Телефон *</div> <div class="put"> <span class="wpcf7-form-control-wrap k-fam"><input type="text" name="k-fam" value="" size="40" class="wpcf7-form-control wpcf7-text wpcf7-validates-as-required" aria-required="true" aria-invalid="false"></span> </div> <div class="vlo2"> E-mail *</div> <div class="put"> <span class="wpcf7-form-control-wrap k-email"><input type="email" name="k-email" value="" size="40" class="wpcf7-form-control wpcf7-text wpcf7-email wpcf7-validates-as-required wpcf7-validates-as-email" aria-required="true" aria-invalid="false"></span></div> <div class="vlo2"> Логин скайп </div> <div class="put"> <span class="wpcf7-form-control-wrap k-skype"><input type="text" name="k-skype" value="" size="40" class="wpcf7-form-control wpcf7-text wpcf7-validates-as-required"></span> </div> <div class="vlo2"> Количество занятий</div> <div class="put"> <span class="wpcf7-form-control-wrap k-less"><input type="number" name="k-less" value="1" class="wpcf7-form-control wpcf7-number wpcf7-validates-as-required wpcf7-validates-as-number" aria-invalid="false"></span> </div> <div class="clear"></div> <div class="vlo2 amm">Всего: </div> <div class="put amm2"> <span class="wpcf7-form-control-wrap k-cost strong gr">0</span></div> <form class="asd" method="post" action=""> <input type="hidden" name="ik_co_id" value=""> <input type="hidden" name="ik_cur" value="RUB"> <input type="hidden" name="ik_desc" value="lenword.com"> <input type="hidden" name="ik_x_name" value=""> <input type="hidden" name="ik_x_fam" value=""> <input type="hidden" name="ik_x_email" value=""> <input type="hidden" name="ik_x_skype" value=""> <input type="hidden" name="ik_x_prepod" value="<?php nazva(); ?>"> <input type="hidden" name="ik_x_less" value="1"> <?php $v = $wpdb->get_row( "SELECT * FROM kpays WHERE id=(SELECT MAX(id) FROM kpays)", ARRAY_A);?> <input type="hidden" name="ik_pm_no" value="<?php echo $v['id']+1; ?>"> <input id="paycost" type="hidden" name="ik_am" value="100"> <div class="clear"></div> <div class="c"> <button type="submit" class="button133j kinter"> Оплатить </button> </div> </form> есть данные: цена за один урок - например 5 $ курс доллара - например 55 р форма должна при загрузке считать 5*55*на цифру в поле где количество занятий она считает и показывает но только когда вручную нужно вбить Количество и кликнуть в любом месте екрана По умолчанию должно умножать на 1. и сразу же выводить результат Спасибо. Сори что долго объясняю |
$(window).load(function() { $('input[name="k-less"]').change(function () { summ = $(this).val(); perhour = parseInt($('.kperhour').text(), 10); kurs = 65; console.log('summ '+summ+' perhour '+perhour+' kurs '+kurs+'') summ = summ*perhour*kurs; $('.k-cost').text(summ); console.log('k-less'); }).trigger("change"); }); |
Спасибо, число выводит на екран. Но не передает его в форму, опять же нужно кликать по счетчику что бы передавало.
|
pava467,
это понятно, не понятно чего вы считать собрались при загрузке страницы? Пусть 1 (то что по умолчанию в форме указано) и его цена $5. Сервер отдает форму ну так почему ему сразу не просчитать эту цену в рублях и вывести как по умолчанию? Зачем этим напрягать клиента? Он будет считать только по изменению, то есть при вводе значения форму. |
laimas,
а зачем дублировать код? Пусть всё в js считается. Заодно на сервере при получении данных с формы будет видно когда скрипт не отработал (это лучше чем получить неверные данные). - О какой нагрузке на клиент вы говорите в данном случае?... :) pava467, в какую форму? По какому счётчику? |
Цитата:
Несете не понять что. А насчет отработал клиент, не отработал, так миль пардон, по умолчанию почему-то определено. |
Согласен с Вами, вот только я не могу реализовать это сам. Сюда пришел за помощью..
|
Цитата:
Впрочем, не буду спорить. Своё мнение я высказал, а решать всё-равно ТопикСтартеру. |
Цитата:
|
Одно место - js, второе - php.
Дублироваться будет эта строчка: Код:
summ = summ*perhour*kurs; |
Цитата:
<?=$price*$current?> Цитата:
А через год война атомная.... ну что пороть не понять что. Вот чтобы не забыть, в одном месте, и никак не в скриптах клиентских, а на сервере и определяются параметры и значения. Клиентский скрипт же пишется под них. |
Так а мне что делать то с кодом?
|
Цитата:
Очень странная форма у вас, кроме скрытых полей в ней ничего нет, а поля с именем "k-less" не видно, но в общем это может выглядеть так и сразу с выводом в рублях для этого значения по умолчанию: <input name="k-less" value="1" data-price="<?=$perhour?>" data-usd="<?=$currency?>" /> <span class="k-cost"><?=$perhour * $currency?></span> Клиент обрабатывает расчет по мере ввода в поле: $(window).load(function() { $('input[name="k-less"]').change(function () { var o = $(this); $('.k-cost').text(o.data('price') * o.data('usd') * this.value); }); }); Запрос же в базу обязательно заменить, то что у вас написано, это мягко выражаясь ахинея. Последняя запись в базу, это из отсортированных в обратном порядке по ID или времени добавления записи взять первую (LIMIT 1). Если при этом интересует только поле id, то только его и нужно получать. Но если его получение для <?=$v['id']+1?> (это краткая запись <?php echo $v['id']+1; ?>), которое будет служить новым идентификатором для новой записи, то это грубейшая ошибка. Идентификаторы записей, это зачастую первичный ключ с автоинкрементом. Если таким образом формировать идентификаторы записей в базе, то это можно делать только если у этой таблицы будет один единственный пользователь, что вряд ли в вашем случае верно. А это означает, что неизбежны ситуации, когда один из пользователей, которым вашим кодом будет сформирован один и тот же следующий ID, запишет в базу, а попытка записи второго приведет к ошибке дублирования ключа. Если даже это не первичный ключ с автоинкрементом, то запись второго пользователя заменит запись первого. |
Часовой пояс GMT +3, время: 20:26. |