19.04.2016, 21:32
|
Аспирант
|
|
Регистрация: 19.04.2016
Сообщений: 55
|
|
Прошу помощи по скрипту подсчета
Здравствуйте! Нашел скрипт на форуме подсчета из полей и не могу подкорректировать его, а именно, вот скрипт:
<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 . Заранее спасибо за помощь!
|
|
20.04.2016, 12:58
|
Профессор
|
|
Регистрация: 27.11.2015
Сообщений: 2,899
|
|
PonyS,
Хотелось бы увидеть пример html , по которому проводится расчет
|
|
20.04.2016, 19:43
|
Аспирант
|
|
Регистрация: 19.04.2016
Сообщений: 55
|
|
<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>
|
|
20.04.2016, 19:47
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,109
|
|
PonyS,
Пожалуйста, отформатируйте свой код!
Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[js]
... ваш код...
[/js]
О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.
|
|
20.04.2016, 20:24
|
Аспирант
|
|
Регистрация: 19.04.2016
Сообщений: 55
|
|
<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>
|
|
21.04.2016, 12:26
|
Профессор
|
|
Регистрация: 27.11.2015
Сообщений: 2,899
|
|
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>
|
|
22.04.2016, 14:18
|
Аспирант
|
|
Регистрация: 19.04.2016
Сообщений: 55
|
|
Спасибо большое, единственный момент, как сделать чтобы считалось сразу?(как было в том коде начальном), то бишь тут у вас сейчас начинает считать если выбрать самый последний вариант sdg, можно ли сделать чтобы считалось сразу при любом выборе селекта? то бишь выбрали 1 и 2-й и подсчиталось сразу 2, если выбрали допольнительно sdg то+ умножилось как нужно, заранее спасибо
|
|
22.04.2016, 16:26
|
Профессор
|
|
Регистрация: 27.11.2015
Сообщений: 2,899
|
|
PonyS,
У вас по умолчанию sdg 0(см. строку 8 и строку 61 в моем примере по вашему образцу) - потому и не считается - точнее, считается, но результат равен 0, поменяйте на 1 - будет считаться, простая арифметика.
Кстати, в вашем расчете не участвует переменная sale, т.к. нет элементов с таким классом
|
|
23.04.2016, 15:25
|
Аспирант
|
|
Регистрация: 19.04.2016
Сообщений: 55
|
|
Сообщение от Dilettante_Pro
|
PonyS,
У вас по умолчанию sdg 0(см. строку 8 и строку 61 в моем примере по вашему образцу) - потому и не считается - точнее, считается, но результат равен 0, поменяйте на 1 - будет считаться, простая арифметика.
Кстати, в вашем расчете не участвует переменная sale, т.к. нет элементов с таким классом
|
Спасибо большое, все работает!
|
|
|
|