Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Скрипт подсчета суммы по выборке, нужна помощь (https://javascript.ru/forum/misc/56704-skript-podscheta-summy-po-vyborke-nuzhna-pomoshh.html)

usebest 30.06.2015 10:20

Скрипт подсчета суммы по выборке, нужна помощь
 
Здравствуйте. Очень нужна ваша помощь... Есть скрипт подсчета суммы по выборке (ввод числа input text и чекбокс) - http://pastebin.com/i1X7xugT . Помогите пожалуйста сделать так, чтобы работала выборка по option value и чтобы можно было бы указать % в чекбокс, допустим я ставлю чекбокс - 25% и от суммы ранних просчетов по форме была скидка в размере - 25%...Заранее спасибо за помощь!

рони 30.06.2015 12:38

usebest,
попробуйте более подробно описать что и как вы хотите суммировать и где в вашем коде 25%?

usebest 30.06.2015 12:51

Сейчас скрипт подсчитывает числа в один input , допустим я ввожу в первое поле 10, в второе 15, и в инпуте id text идет подсчет и выводит 25. В этом скрипте подсчитывает только в полях type=text и checkbox, мне нужно чтобы работал так же подсчет по select , к примеру я выбираю из списка селекса какое-то значение и из value(option) число тоже подсчитывается вместе с остальными полями.
<select name="u1"  class="chkOptions">
            <option value="0" selected="selected">нет</option>
    <option value="120">1 упаковка</option>
    <option value="240">2 упаковки</option>
    <option value="300">3 упаковки</option>
</select>


По поводу % в чекбоксе, я имею ввиду вот в коде <input type="checkbox" id="chk2" value="10" class="sum" /> , value="10" и есть %, только нужно это кодом прописать чтобы алгоритм считал это не как число, а как % от остальных подсчетов, пример: Я выбрал из селекта значения - 10, и появилось первое число, потом выбрал второй селект - 25, и их значения по value просто суммируются и выходит в input id="text" = 35 , потом я ставлю галочку чекбокса 10, и от 35 идет пересчет на - 10%, то бишь алгоритм - 35-(35*10/100)=31,5(со скидкой 10%)

рони 30.06.2015 13:33

usebest,
уже лучше, но где в селекте - 10?
Цитата:

Сообщение от usebest
Я выбрал из селекта значения - 10

и где второй селект ?
Цитата:

Сообщение от usebest
потом выбрал второй селект

:-?

usebest 30.06.2015 13:41

Вот я изменил структуру формы с необходимыми селектами и чекбоксами http://pastebin.com/EHR2pc7Z

usebest 30.06.2015 13:42

Цитата:

Сообщение от рони (Сообщение 377134)
usebest,
уже лучше, но где в селекте - 10?

и где второй селект ?
:-?

Я не говорил конкретно в селекте - 10, я говорил за значение которое в option value="число" , а 10 взял за пример

рони 30.06.2015 13:49

usebest,
и что теперь с чем складывать?

usebest 30.06.2015 13:50

Алгоритм просчета с % по чекбоксу я уже сделал, осталось мне непонятно как сделать чтобы бралось значение из селекта и суммировались с остальными, к type=text сделано так -
if ((type == "text")) {
                  sum += parseInt($(this).val(), 10) || 0;
              }
, а как сделать так же для селекта? пробовал вот так
if (el.attr("selected")) {
                  sum += parseInt($(this).val(), 10) || 0;
              }
но не работает...Помогите пожалуйста

usebest 30.06.2015 13:54

Вот https://jsfiddle.net/Qt3cf/100/ как сейчас у меня вышло, 2 поля с вводом чисел, и чекбокс %, все работает кроме селекта, когда выбираю допустим 1 упаковка, то число из option value не суммируется с остальными...Помогите решить пожалуйста

рони 30.06.2015 14:08

usebest,
вариант того как я вас понял
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title><meta charset="utf-8">
  	<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
</head>

<body>




    <form action="" method="POST">
    <input type="text" name="text1" id="text1" class="sum" /><br />
    <input type="text" name="text2" id="text2" class="sum" /> <br />
      <select name="u1"  class="chkOptions">
        <option value="0" selected="selected">нет</option>
        <option value="120">1 упаковка</option>
        <option value="240">2 упаковки</option>
        <option value="300">3 упаковки</option>
    </select>

     <select name="u2"  class="chkOptions2">
        <option value="0" selected="selected">нет</option>
        <option value="121">4 упаковка</option>
        <option value="245">5 упаковки</option>
        <option value="302">6 упаковки</option>
    </select>
        <br />
        <input type="checkbox" id="chk1" value="400" class="sum" /><label for="chk1">400</label> <br />
        <input type="checkbox" id="chk2" value="100" class="sum" /><label for="chk2">100</label> <br />

     <input type="checkbox" id="chk3" value="41" class="sale" /><label for="chk3">41%</label> <br />
        <input type="checkbox" id="chk4" value="15" class="sale" /><label for="chk4">15%</label> <br />

     <input type="checkbox" id="chk5" value="43" class="sale" /><label for="chk5">43%</label> <br />
        <input type="checkbox" id="chk6" value="16" class="sale" /><label for="chk6">16%</label> <br />

      Итого  <input type="text" name="text" id="text">
    </form>
    <script>
    $(function() {
    var calc = function() {
        var sum = 0;
        $("select,.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((sum - sum * sale / 100).toFixed(2))
    };
    fields = $("form");
    fields.on('input change',calc)
});
    </script>
</body>

</html>


Часовой пояс GMT +3, время: 21:53.