jquery - 如何从具有相同名称的多个输入中获取值,其中输入字段是使用 jQuery 动态创建的?
问题描述
我想通过单击按钮动态创建金额、数量、小计字段。但问题是,当我有多行具有相同名称的动态输入字段时,由于 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
解决方案
您可以使用class
选择器,然后使用.closest()
and.find()
获取所需的数量和数量,然后计算它们并在小计输入中添加新值
演示代码:
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" /></td><td class="td"><input type="text" name="amount[' + i + ']" placeholder="Enter amount" class="form-control amount"/></td><td class="td"><input type="text" name="subtotal[' + i + ']" placeholder="Subtotal" class="form-control subtotal" value="0.0" readonly/></td><td class="td2"><button type="button" name="add" class="btn btn-danger remove-tr">Remove</button></td></tr>');
});
$(document).on('click', '.remove-tr', function() {
$(this).parents('tr').remove();
});
//on key up of amt & qty
$(document).on('keyup', '.amount , .quantity', function() {
//get amt and qty value
var amount = $(this).closest('tr').find('.amount').val();
var quantity = $(this).closest('tr').find('.quantity').val();
var subtotal = amount * quantity;
//add value to required subtotal td
$(this).closest('tr').find('.subtotal').val(subtotal);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<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>
推荐阅读
- spring - 使用 azure 服务总线的 spring 批处理集成配置
- javascript - 将 div 放在 div 之上,而不是在第三个 div 上工作
- html - Bootstrap - 我如何让所有卡片的高度相同?
- go - 尝试使用供应商目录部署 Google Cloud 功能时出错
- reactjs - Reactjs SPA - 按 IOS Safari 后退按钮更新 url 但不更新组件视图
- postgresql - 安装时更改端口号导致连接PostgreSQL服务器失败
- c# - 如何更改嵌套列表的子项中的变量值
- android - Firebase 是否对使用磁盘持久性在设备上下载的数据库进行的查询收费?
- gatsby - fsevents.watch 错误运行 Gatsby hello-world 示例
- wpf - 将名称添加到特定样式控件 wpf