我在我的视图中有这个表,我可以在该表中添加一个新行:
<table id="t1">
<tr>
<th>Item</th>
<th>Quantity</th>
</tr>
<tr id="r1">
<td><input name="item[0][]" type="text"/></td>
<td><input name="quantity[0][]" type="number"/></td>
<td><button class="deleteRow">X</button></td>
</tr>
</table>
<button id="addRow">Add Row</button>
.jQuery
$(document).on('click', '#addRow', function(){
var row = parseInt($('#t1 tr:last-child').attr('id').replace(/[^\d]/g, ''), 10) + 1;
$('#t1').append('<tr id="r'+row+'"><td><input name="item[][]" type="text"/></td><td><input name="quantity[][]" type="number"/></td><td><button class="deleteRow">X</button></td></tr>');
});
$(document).on('click', '.deleteRow', function(){
var row = parseInt($(this).closest('tr').attr('id').replace(/[^\d]/g, ''), 10);
if (row > 1) {
$('#r'+row).remove();
$('#t1 tr:gt(0)').attr('id',function(i,o){
return "r"+ (i+1);
});
}
});
但是当我添加一个新行时,我想获得前一行的第一个键[this_one] []
<td><input name="item[this_one][]" type="text"/></td>
我希望你理解我的意思。
那么如何在第一个括号/第一个键内获取值?
所以当添加一个新行时,我需要这样的变量:
$(document).on('click', '#addRow', function(){
var row = parseInt($('#t1 tr:last-child').attr('id').replace(/[^\d]/g, ''), 10) + 1;
var first_key = ?????
$('#t1').append('<tr id="r'+row+'"><td><input name="item['+first_key+'][]" type="text"/></td><td><input name="quantity['+first_key+'][]" type="number"/></td><td><button class="deleteRow">X</button></td></tr>');
});
答案 0 :(得分:1)
了解我如何添加['+(row - 1)+']
,因为您已在计算row
以更新id
$(document).on('click', '#addRow', function(){
var row = parseInt($('#t1 tr:last-child').attr('id').replace(/[^\d]/g, ''), 10) + 1;
$('#t1').append('<tr id="r'+row+'"><td><input name="item['+(row - 1)+'][]" type="text"/></td><td><input name="quantity['+(row - 1)+'][]" type="number"/></td><td><button class="deleteRow">X</button></td></tr>');
});
$(document).on('click', '.deleteRow', function(){
var row = parseInt($(this).closest('tr').attr('id').replace(/[^\d]/g, ''), 10);
if (row > 1) {
$('#r'+row).remove();
$('#t1 tr:gt(0)').attr('id',function(i,o){
return "r"+ (i+1);
});
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table id="t1">
<tr>
<th>Item</th>
<th>Quantity</th>
</tr>
<tr id="r1">
<td><input name="item[0][]" type="text"/></td>
<td><input name="quantity[0][]" type="number"/></td>
<td><button class="deleteRow">X</button></td>
</tr>
</table>
<button id="addRow">Add Row</button>
聊天讨论后更新 因此OP需要获得值“this_one”,正如他在问题中实际解释的那样。 So this fiddle was the solution he was looking for
答案 1 :(得分:0)
这个怎么样?
var first_key = $('#t1 tr:last-child > td:first-child > input').attr("name");
var startPosition = first_key.indexOf("[");
var endPosition = first_key.indexOf("]");
var subStringName = first_key.substring(startPosition+1,endPosition);
Var substringName将保存您要查找的值。 通过使用正则表达式而不是startposition和endPosition可以进一步改善这一点。我不是很擅长正则表达式因此尝试通过javascript函数完成所有工作。