Прошу помощи по скрипту подсчета
Здравствуйте! Нашел скрипт на форуме подсчета из полей и не могу подкорректировать его, а именно, вот скрипт:
<script> $(function() { var calc = function() { var sum = 0; $(".s2,.text2,.sum[type='text'],.sum:checked", fields).each(function() { sum += +this.value||0 }); var sale = 0; $(".sale:checked", fields).each(function() { sale += +this.value }); var sales = 0; $(".sdg", fields).each(function() { sales += +this.value }); $("#text").val((sum - sum * sale / 100).toFixed(2)) }; fields = $("form"); fields.on('input change',calc) }); </script> В код я добавил поиск по полю с классом sdg по аналогу как с скрипте, и теперь мне нужно чтобы в подсчете участвовало и поле sdg с другим именем sales , но чтобы оно не добавлялось в + как остальные, а умножало при выборе. Пробовал менять вот на такое $("#text").val((sum - sum * sale * sales / 100).toFixed(2)) но оно считает только после выбора sum и т.д, а не сразу и без привязки выбора, то бишь захотел выбрать sum поля - выбрано и подсчиталось, добавил в инпут sdg еще 2 и все что ранее я выбрал умножилось на значение из поля sdg . Заранее спасибо за помощь!:) |
PonyS,
Хотелось бы увидеть пример html , по которому проводится расчет |
<form action="" method="POST" id="form" style="">
<select name="s2" class="s2" > <option value="0" selected="selected">How many?</option> <option value="90">90$</option> <option value="95">95$</option> <option value="120">120$</option> <option value="150">150$</option> <option value="180">180$</option> </select> <select name="text2" class="text2"> <option value="0" selected="selected">How many?</option> <option value="0">0$</option> <option value="25">25$</option> <option value="50">50$</option> <option value="75">75$</option> <option value="100">100$</option> </select> <select name="text22" class="text2"> <option value="0" selected="selected">Number</option> <option value="1">1m</option> <option value="2">2m</option> <option value="3">3m</option> <option value="4">4m</option> <option value="5">5m</option> <option value="6">6m</option> </select> 3 селекта сейчас суммируется, а вот 4-й class="sdg" должен умножаться что выбрали до этого на число в value(3,4,5,6 и т.д по выбору) <select name="sdg" class="sdg"> <option value="0" selected="selected">Duration</option> <option value="3">3h</option> <option value="4">4h</option> <option value="5">5h</option> <option value="6">6h</option> <option value="7">7h</option> </select> Расчет - <input type="text" value="0.00" id="text"> </form> |
PonyS,
Пожалуйста, отформатируйте свой код! Для этого его можно заключить в специальные теги: js/css/html и т.п., например: [js] ... ваш код... [/js] О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting. |
<script> $(function() { var calc = function() { var sum = 0; $(".s2,.text2,.sum[type='text'],.sum:checked", fields).each(function() { sum += +this.value||0 }); var sale = 0; $(".sale:checked", fields).each(function() { sale += +this.value }); var sales = 0; $(".sdg", fields).each(function() { sales += +this.value }); $("#text").val((sum - sum * sale / 100).toFixed(2)) }; fields = $("form"); fields.on('input change',calc) }); </script> <form action="" method="POST" id="form" style=""> <select name="s2" class="s2" > <option value="0" selected="selected">How many?</option> <option value="90">90$</option> <option value="95">95$</option> <option value="120">120$</option> <option value="150">150$</option> <option value="180">180$</option> </select> <select name="text2" class="text2"> <option value="0" selected="selected">How many?</option> <option value="0">0$</option> <option value="25">25$</option> <option value="50">50$</option> <option value="75">75$</option> <option value="100">100$</option> </select> <select name="text22" class="text2"> <option value="0" selected="selected">Number</option> <option value="1">1m</option> <option value="2">2m</option> <option value="3">3m</option> <option value="4">4m</option> <option value="5">5m</option> <option value="6">6m</option> </select> 3 селекта сейчас суммируется, а вот 4-й class="sdg" должен умножаться что выбрали до этого на число в value(3,4,5,6 и т.д по выбору) <select name="sdg" class="sdg"> <option value="0" selected="selected">Duration</option> <option value="3">3h</option> <option value="4">4h</option> <option value="5">5h</option> <option value="6">6h</option> <option value="7">7h</option> </select> Расчет - <input type="text" value="0.00" id="text"> </form> |
PonyS,
Совсем не понял смысла этих расчетов, но как-то так... <!DOCTYPE html> <html> <head> <title>Untitled Page</title> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script> <script> $(function () { var sales = 0; $(".sdg").change(function () { sales = this.value; calc(); }); var calc = function () { var sum = 0; $(".s2,.text2,.sum[type='text'],.sum:checked", fields).each(function () { sum += +this.value || 0 }); var sale = 0; $(".sale:checked", fields).each(function () { sale += +this.value }); $("#text").val(sales * (sum - sum * sale / 100).toFixed(2)) }; fields = $("form"); fields.on('input change', calc); }); </script> </head> <body> <form action="" method="POST" id="form" style=""> <select name="s2" class="s2"> <option value="0" selected="selected">How many?</option> <option value="90">90$</option> <option value="95">95$</option> <option value="120">120$</option> <option value="150">150$</option> <option value="180">180$</option> </select> <select name="text2" class="text2"> <option value="0" selected="selected">How many?</option> <option value="0">0$</option> <option value="25">25$</option> <option value="50">50$</option> <option value="75">75$</option> <option value="100">100$</option> </select> <select name="text22" class="text2"> <option value="0" selected="selected">Number</option> <option value="1">1m</option> <option value="2">2m</option> <option value="3">3m</option> <option value="4">4m</option> <option value="5">5m</option> <option value="6">6m</option> </select> <select name="sdg" class="sdg"> <option value="0" selected="selected">Duration</option> <option value="3">3h</option> <option value="4">4h</option> <option value="5">5h</option> <option value="6">6h</option> <option value="7">7h</option> </select> Расчет - <input type="text" value="0.00" id="text"> </form> </body> </html> |
Спасибо большое, единственный момент, как сделать чтобы считалось сразу?(как было в том коде начальном), то бишь тут у вас сейчас начинает считать если выбрать самый последний вариант sdg, можно ли сделать чтобы считалось сразу при любом выборе селекта? то бишь выбрали 1 и 2-й и подсчиталось сразу 2, если выбрали допольнительно sdg то+ умножилось как нужно, заранее спасибо
|
PonyS,
У вас по умолчанию sdg 0(см. строку 8 и строку 61 в моем примере по вашему образцу) - потому и не считается - точнее, считается, но результат равен 0, поменяйте на 1 - будет считаться, простая арифметика. Кстати, в вашем расчете не участвует переменная sale, т.к. нет элементов с таким классом |
Цитата:
|
Часовой пояс GMT +3, время: 06:18. |