我有一个表有多行,输入字段具有相同的名称
<tr>
<td>
<input type=text name=icode[] id=icode>
</td>
<td>
<input type=text name=description[] id=description>
</td>
<td>
<input type=text name=rprice[] id=rprice>
</td>
<td>
<input type=text name=discount[] id=discount>
</td>
<td>
<input type=text name=fprice[] id=fprice>
</td>
</tr>
现在使用聚焦功能我想从数据库中填充description和rprice的值。但我无法在同一行进行此操作。浏览时我发现了这段代码
$(_this).parents('tr').find('#description').val(obj.description);
但它会更新所有行和特定行。
所以基本上当我在第2行的icode中输入1时,我希望第2行的描述和rprice只更新而不是所有行。
我发布了一个示例代码供参考:http://jsfiddle.net/nA7RL/
提前致谢。
答案 0 :(得分:2)
使用父代替父母:
$(_this).parent().parent('tr').find('#description').val(obj.description);
.parents()和.parent()方法类似,只是后者只在DOM树中向上移动一层。
在您的情况下,parents方法将转到更高级别的tr,并且从那里,find方法将查找所有现有的描述字段。
答案 1 :(得分:0)
元素的ID
必须是唯一的。如果您有重复的ID,它们将无法工作。请改用class
。
<强> HTML 强>
<table>
<tr>
<td>
<input type="text" name="icode[]" class="icode">
</td>
<td>
<input type="text" name="description[]" class="description">
</td>
<td>
<input type="text" name="rprice[]" class="rprice">
</td>
<td>
<input type="text" name="discount[]" class="discount">
</td>
<td>
<input type="text" name="fprice[]" class="fprice">
</td>
</tr>
<tr>
<td>
<input type="text" name="icode[]" class="icode">
</td>
<td>
<input type="text" name="description[]" class="description">
</td>
<td>
<input type="text" name="rprice[]" class="rprice">
</td>
<td>
<input type="text" name="discount[]" class="discount">
</td>
<td>
<input type="text" name="fprice[]" class="fprice">
</td>
</tr>
</table>
<强>的Javascript 强>
$('.icode').on('change', function() {
$(this).parents('tr').find('.description').val($(this).val());
});
<强> Demo 强>