【问题标题】:how to get value from multiple inputs with same name, Input Fields Dynamically with jQuery?如何从具有相同名称的多个输入中获取值,使用 jQuery 动态输入字段?
【发布时间】:2021-05-11 10:44:40
【问题描述】:

我想通过单击按钮动态添加金额、数量、小计字段作为发票项目。

但问题是,当我想每次获取quantityamount 输入字段的值来计算时,由于id 名称相同,我无法使用jquery 获取值。

如何获取动态字段值来计算小计。

这是代码。

@extends('layout.master')
@section('css')
    @endsection
@section('content')
       
          <div id="saveInvoice">
            <table id="dynamicAddRemove">
              <tr>
                <th class="wd-15p fontColor">Invoice Entry</th>
                <th class="wd-15p fontColor">Quantity</th>
                <th class="wd-15p fontColor">Amount</th>
                <th class="wd-15p fontColor">Subtotal</th>
                <th class="wd-10p fontColor"></th>
              </tr>
              <tr>
                <td class="td"><input type="text" name="entry[]" placeholder="Enter entry" class="form-control" /></td>
                <td class="td"><input type="text" name="quantity[]" placeholder="Enter quantity" class="form-control quantity" id="quantity"/></td>
                <td class="td"><input type="text" name="amount[]" placeholder="Enter amount" class="form-control amount" id="amount" /></td>
                <td class="td"><input type="text" name="subtotal[]" placeholder="Subtotal" class="form-control subtotal"id="subtotal" value="0.00" readonly/></td>
                <td class="td2"><button type="button" name="add" id="add-btn" class="btn btn-success">Add More</button></td>
              </tr>
           </table>
           <br>
            <input type="hidden" name="patientId" id="patientId">
            <input type="submit" id="submit" value="Save Invoice" class="btn btn-dark">
          </div>

          {!! Form::close() !!}
        </div>

      </div>
    </div>
  </div>

  <br>
</div>

@endsection

@section('js')
<script src="http://cdn.bootcss.com/jquery/2.2.4/jquery.min.js"></script>


</script>
<script type="text/javascript">
  $(document).ready(function () {
    var i = 0;
    $("#add-btn").click(function(){
      ++i;
      $("#dynamicAddRemove").append('<tr><td class="td"><input type="text" name="entry['+i+']" placeholder="Enter entry" class="form-control"/></td><td class="td"><input type="text" name="quantity['+i+']" placeholder="Enter quantity" class="form-control quantity" id="quantity" /></td><td class="td"><input type="text" name="amount['+i+']" placeholder="Enter amount" class="form-control amount" id="amount"/></td><td class="td"><input type="text" name="subtotal['+i+']" placeholder="Subtotal" class="form-control subtotal" value="0.0" id="subtotal" readonly/></td><td class="td2"><button type="button" name="add" id="add-btn" class="btn btn-danger remove-tr">Remove</button></td></tr>');
      });
      $(document).on('click', '.remove-tr', function(){
      $(this).parents('tr').remove();
    });
  });
</script>

<script src="http://cdn.bootcss.com/jquery/2.2.4/jquery.min.js"></script>
 <script type="text/javascript">
  $(document).ready(function () {

    $('#amount').on('keyup',function(){
      var amount = $(this).val();
      console.log(amount);
      var quantity = $('#quantity').val();
      var subtotal=amount*quantity;
      $('#subtotal').val(subtotal);

      });
      $('#quantity').on('keyup',function(){

      var quantity =$(this).val();
      console.log(amount);
      var amount = $('#amount').val();
      var subtotal=amount*quantity;
      $('#subtotal').val(subtotal);

      });
  });
</script>

@endsection

【问题讨论】:

  • 请阅读minimal reproducible example - 由于所有其他代码和模糊的描述,很难判断您的代码的哪一部分有问题。例如,2x $.ajax 请求是否相关?它们似乎不是,因此最好将它们从问题中删除,以便我们为您提供帮助。
  • jquery.min.js 包含两次...
  • 给你的输入一个类而不是 id,例如&lt;input class='quantity' 然后在你的$(".amount") keyup 中,更改为var quantity = $(this).closest("tr").find(".quantity").val() 以获取当前行的那个。
  • 感谢您的回复。我已经缩短了我的代码,以便您了解我的问题。您能再检查一下吗..当我有多行输入文件时,我无法计算小计跨度>
  • 如果这解决了您的问题,请将其标记为正确 :) 它将帮助其他人找到正确的解决方案

标签: jquery laravel


【解决方案1】:

您可以使用这种方法来获取数量数组值,例如:

var quantityArray = $("input[name='quantity[]']")
                    .map(function(){return $(this).val();}).get();

然后像这样计算总和:

var quantity = quantityArray.reduce(function(a, b) {
                    return parseInt(a, 10) + parseInt(b, 10);
                });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-08
    • 1970-01-01
    • 2010-10-03
    • 2017-08-03
    • 1970-01-01
    • 2019-05-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多