Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Динамической суммирование и вывод значении input (https://javascript.ru/forum/jquery/84321-dinamicheskojj-summirovanie-i-vyvod-znachenii-input.html)

vasoli 05.08.2022 11:33

Динамической суммирование и вывод значении input
 
как суммировать и динамически вывести значение сгенерированных input
$(document).ready(function() {
   $('.sum_value input').click(function() {
     $('#options_value2').html('');
     $('input:checkbox:checked').each(function() {
       $('#options_value2').append($(this).val() + (`<input class="number" type="number" value="" max="${this.value}" /><br>`));
     });
   });
 });

<div class="grid_css">
    <div class="column_1">
      <ul id="accordion">
        <li>
          <div class="line_All_green">

            <div class="sum_value">

              <div id="1" class="table-td">
                <input type="checkbox" value="11111" id="1_1"><span>A 1</span><noscript>aaa111</noscript>
              </div>
              <div id="2" class="table-td">
                <input type="checkbox" value="22222" id="2_2"><span>B 2</span><noscript>bbb222</noscript>
              </div>
              <div id="3" class="table-td">
                <input type="checkbox" value="33333" id="3_3"><span>C 3</span><noscript>ccc333</noscript>
              </div>

            </div>
          </div>
        </li>
      </ul>

    </div>

    <div class="column_3" id="column_3">
      <div class="options_sum" id="options_sum">Sum: <span></span></div>Value:
      <div class="options_value2" id="options_value2">
        <p id="options_value2" class="options_value2"></p>
      </div>
      
      <button id="button2" class="button2" > Copy </button>
    </div>
  </div>

ksa 05.08.2022 12:31

Цитата:

Сообщение от vasoli
как суммировать и динамически вывести значение сгенерированных input

Использовать делегирование событий...
https://codernote.ru/jquery/sobytiya-jquery/on/

vasoli 05.08.2022 12:37

а можно конкретно на указанном примере? гуглить все умеем, но когда не разбираемся пишем тут.

рони 05.08.2022 12:47

vasoli,
:(
<!DOCTYPE html>
<html>

<head>
    <title>Untitled</title>
    <meta charset="utf-8">
    <style type="text/css">
    </style>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
    <script>
        $(function() {
            $('.sum_value input').click(function() {
                $('#options_value2').html('');
                $('input:checkbox:checked').each(function() {
                    $('#options_value2').append($(this).val() + (`<input class="number" type="number" value="0" max="${this.value}" /><br>`));
                });
                $('.options_sum span').text(0);
            });
            $('#options_value2').on('input', function() {
                let sum = $('[type="number"]', this).get().reduce((sum, {
                    valueAsNumber
                }) => sum + valueAsNumber, 0)
                $('.options_sum span').text(sum);

            })
        });
    </script>
</head>

<body>
    <div class="grid_css">
        <div class="column_1">
            <ul id="accordion">
                <li>
                    <div class="line_All_green">
                        <div class="sum_value">
                            <div id="1" class="table-td">
                                <input type="checkbox" value="11111" id="1_1"><span>A 1</span><noscript>aaa111</noscript>
                            </div>
                            <div id="2" class="table-td">
                                <input type="checkbox" value="22222" id="2_2"><span>B 2</span><noscript>bbb222</noscript>
                            </div>
                            <div id="3" class="table-td">
                                <input type="checkbox" value="33333" id="3_3"><span>C 3</span><noscript>ccc333</noscript>
                            </div>
                        </div>
                    </div>
                </li>
            </ul>
        </div>
        <div class="column_3" id="column_3">
            <div class="options_sum" id="options_sum">Sum: <span></span></div>Value:
            <div class="options_value2" id="options_value2">
                <p id="options_value2" class="options_value2"></p>
            </div>
            <button id="button2" class="button2"> Copy </button>
        </div>
    </div>
</body>

</html>

vasoli 05.08.2022 13:12

Спасибо.

vasoli 05.08.2022 16:42

если пока отметил один чекбокс и ввел значение а после отметил другой, занчение в первом обнуляется. Можно это исправить?

рони 05.08.2022 17:21

vasoli,
можно, но это задача для вашего развития, нужно придумать алгоритм, что-то нужно изменить в строке 14. попробуйте описать это словами. алгоритмов может быть много, ваша задача как программиста, мыслить алгоритмами, а потом по алгоритму писать код. ход за вами.

vasoli 05.08.2022 17:49

$('input:checkbox:checked').each(function() {
в этой?

рони 05.08.2022 18:02

vasoli,
медитируйте ...
<!DOCTYPE html>
<html>

<head>
    <title>Untitled</title>
    <meta charset="utf-8">
    <style type="text/css">
    </style>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
    <script>
        $(function() {
            let checkboxs = $('.sum_value input:checkbox');
            checkboxs.change(function() {
                $('#options_value2').html('');
                if (this.checked) {
                    let input = $(`<input class="number" type="number" value="0" max="${this.value}" />`);
                    $(this).data('input', input);
                } else $(this).removeData('input');
                checkboxs.each(function(i, checkbox) {
                    if ($(checkbox).data('input')) $('#options_value2').append([checkbox.value, $(checkbox).data('input'), '<br>']);
                })
                $('#options_value2').trigger('input');
            });
            $('#options_value2').on('input', function() {
                let sum = $('[type="number"]', this).get().reduce((sum, {
                    valueAsNumber
                }) => sum + valueAsNumber, 0)
                $('.options_sum span').text(sum);

            })
        });
    </script>
</head>

<body>
    <div class="grid_css">
        <div class="column_1">
            <ul id="accordion">
                <li>
                    <div class="line_All_green">
                        <div class="sum_value">
                            <div id="1" class="table-td">
                                <input type="checkbox" value="11111" id="1_1"><span>A 1</span><noscript>aaa111</noscript>
                            </div>
                            <div id="2" class="table-td">
                                <input type="checkbox" value="22222" id="2_2"><span>B 2</span><noscript>bbb222</noscript>
                            </div>
                            <div id="3" class="table-td">
                                <input type="checkbox" value="33333" id="3_3"><span>C 3</span><noscript>ccc333</noscript>
                            </div>
                        </div>
                    </div>
                </li>
            </ul>
        </div>
        <div class="column_3" id="column_3">
            <div class="options_sum" id="options_sum">Sum: <span></span></div>Value:
            <div class="options_value2" id="options_value2">
                <p id="options_value2" class="options_value2"></p>
            </div>
            <button id="button2" class="button2"> Copy </button>
        </div>
    </div>
</body>

</html>

vasoli 05.08.2022 18:08

Спасибо. Такие задачи значит надо решать переменными?


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