我有一个动态填充的表,每行包含两个可以编辑的文本字段。当用户单击保存按钮时,我想读取那些输入的值并相应地更新:
echo "<td><input value='".$row[0]."' type='hidden'>$sql1[0]</td><td>$sql1[1]</td>
<td><input type='text' id='disc-".$row[0]."' value='".$row[3]."'></td>
$row[0]
是数据库中该行的ID,$row[3]
是当前存储的值。我想要实现的是,一旦用户点击保存,我会根据ID读取用户在文本字段中输入的值,以便可以更新。因为它有一个选择这些元素的JavaScript:
for(var i = 0; i < $('#order_basket [id |= "disc"]').length; i++) {
alert($('#order_basket [id|="disc"]')??.val());
}
现在返回的长度是正确的,但我正在尝试读取id和将进一步存储在数组中的值。
注意:同一行中有多个文本字段,另一个文本字段有id='disc-".$row[0]."'
答案 0 :(得分:2)
试试这个。
var values = {};
$('#order_basket input[id^="disc"]').each(function(){
values[this.id] = this.value;
});
现在values
对象将包含每个输入元素的id / value对
请注意,我使用属性begin with selector ^=
来查找所有输入元素
根据OP的评论进行更新。
var ids = [], values = [];
$('#order_basket input[id^="disc"]').each(function(){
ids.push(this.id);
values.push(this.value);
});
答案 1 :(得分:0)
您还可以使用类名:
<td><input type='text' class="field1" id='disc-".$row[0]."' value='".$row[3]."'></td>
然后您可以使用以下方式查询:
alert($('.field1').val())
或:
alert($('.field1').attr('id')
您可以检查是否有多个(因为类名不需要是唯一的)
alert($('.field1').length)
然后,您可以使用for循环或.each()
循环遍历值