Как я могу умножить или добавить значения динамического поля ввода JavaScript - PullRequest
0 голосов
/ 07 октября 2019

Поле ввода было сгенерировано javascript. Я хочу выбрать каждое значение независимо от того, сколько полей ввода я сгенерирую ... поэтому я могу использовать значения для некоторых вычислений.

<form action="{{ route('addmorePost') }}" method="POST">
<div class="table-responsive">
                   <span id="result"></span>

                   <table class="table table-bordered">
                   <thead>
                  <tr>
                      <th width="55%">Sales Representative</th>
                      <th width="15%">Target per day</th>
                      <th width="15%">Monthly day</th>
                      <th width="10%"> <a href="#" class="btn btn-info addRow">+ </a> </th>
                  </tr>
                 </thead>
                 <tbody>
                    <tr> 
                        <td> 
              <input type="text" name="target[]" class="form-control target" id="target" oninput="calc()">
                       </td>

                       <td><span id="sum1" onchange="add()">0</span> </td>

                       <td> <a href="#" class="btn btn-danger remove">- </a> </td>
                      </tr>
                 </tbody>
                 <tfoot>


                    <tr>
                       <th>  
                       </th>
                       <th> Total</th>
                       <th><span id="sumx">0</span> </th> 
                     </tr>

                   </tfoot>


                   <script>                
                      function add() {

                      var ven1 = document.getElementById('sum1').innerHTML;
                      var valuey = document.getElementById('result1').innerHTML || 0; 
                      console.log(ven1);
                      console.log(valuey);
                      document.getElementById('sumx').innerHTML = parseInt(ven1) + parseInt(valuey);

                    }
                   </script>




             </table>

              </button>

            </form> 

НИЖЕ JAVASCRIPT ДЛЯ ПОЛУЧЕНО INPUT FIELDS

<script type="text/javascript">

  $(document).ready(function(){      
  var postURL = "http://localhost/bcwater/public/addmore";
  var i=1; 

  $('.addRow').on('click', function(){
    i++;
    addRow();
  });

  function addRow(){
     var tr = '<tr class="dynamic-added">'+
                '<td>'+
                '</td>'+
                '<td><input type="text" name="target[]" id="target2" class="form-control" oninput="calc()" /> </td>'+
                '<td><span id="result1">0</span> </td>'+
                '<td> <a href="#" class="btn btn-danger remove">- </a> </td>'+

              '</tr>';
          $('tbody').append(tr);
  }; 

  $('tbody').on('click','.remove', function(){
    $(this).parent().parent().remove();
  });



});  

ЭТОТ КОДЕЙ ПЫТАЛСЯ ПОЛУЧИТЬ ЗНАЧЕНИЯ, МНОГОКРАТНО ИХ 26 И ОТОБРАТЬ ОТВЕТ НА СУММУ1

    <script>


    function calc(){       
    var value1 = document.getElementById('target').value || 0;
    document.getElementById('sum1').innerHTML = parseInt(value1 * 26);

    var value2 = document.getElementById('target2').value; 
    document.getElementById('result1').innerHTML = parseInt(value2 * 26);


    var ven1 = document.getElementById('sum1').innerHTML;
    var valuey = document.getElementById('result1').innerHTML || 0; 
    console.log(ven1);
    console.log(valuey);
    document.getElementById("products").disabled = false;
    document.getElementById('sumx').innerHTML = parseInt(ven1) + parseInt(valuey);

    }

    </script>

ПОЖАЛУЙСТА, ПОМОГИТЕ !!! ... Что я делаю не так

Ответы [ 2 ]

1 голос
/ 07 октября 2019

Из вашего кода каждый раз, когда вы звоните addRow(), идентификатор всегда target2. Чтобы автоматически изменить идентификатор, иметь переменную, которая содержит текущий идентификатор, и объединить строку, вы можете использовать var i.

$(document).ready(function(){      
  var postURL = "http://localhost/bcwater/public/addmore";
  var i=1; 

  $('.addRow').on('click', function(){
    i++;
    addRow(i);
  });

  function addRow(i){
     var tr = '<tr class="dynamic-added">'+
            '<td>'+
            '</td>'+
            '<td><input type="text" name="target[]" id="target' + i + '" class="form-control" oninput="calc()" /> </td>'+
            '<td><span id="result' + i + '">0</span> </td>'+ //This is modified to attach the current index to result
            '<td> <a href="#" class="btn btn-danger remove">- </a> </td>'+

          '</tr>';
      $('tbody').append(tr);
  }; 

  $('tbody').on('click','.remove', function(){
     $(this).parent().parent().remove();
  });
});

Переменная i всегда должна содержать индекс длядобавлена ​​последняя строка

Чтобы умножить значения, которые необходимо использовать для одной и той же переменной i, функция calc() должна выглядеть следующим образом, я предлагаю переименовать i во что-то описательное:

function calc(){       
    var value1 = document.getElementById('target').value || 0;
    document.getElementById('sum1').innerHTML = parseInt(value1 * 26);

    for(var j = 1; j <= i; j++) {
        var value2 = document.getElementById('target' + j).value; 
        document.getElementById('result' + j).innerHTML = parseInt(value2 * 26); // This is to target the result span that corresponds to the input value
    }


    var ven1 = document.getElementById('sum1').innerHTML;
    var valuey = document.getElementById('result1').innerHTML || 0; 
    console.log(ven1);
    console.log(valuey);
    document.getElementById("products").disabled = false;
    document.getElementById('sumx').innerHTML = parseInt(ven1) + parseInt(valuey);

}
0 голосов
/ 07 октября 2019

Спасибо. Я смог сделать это таким образом ... после того, как я увеличил значение идентификатора, например, id = "target" + i + '", а также охватил

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

        function calc(){     

        var value1 = document.getElementById('target').value || 0;
        document.getElementById('sum1').innerHTML = parseInt(value1 * 26);

        var value2 = document.getElementById('target2').value; 
        document.getElementById('result2').innerHTML = parseInt(value2 * 26);

        document.getElementById("products").disabled = false;


        var value2 = document.getElementById('target3').value; 
        document.getElementById('result3').innerHTML = parseInt(value2 * 26);




        var ven1 = document.getElementById('sum1').innerHTML || 0;
        var valuey = document.getElementById('result2').innerHTML || 0; 

        var valuenew = document.getElementById('result3').innerHTML || 0; 



        document.getElementById('sumx').innerHTML = parseInt(ven1) + parseInt(valuey) + parseInt(valuenew);

        }

        </script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...