将值添加到同一行中的输入字段

时间:2012-12-11 06:14:15

标签: jquery ajax

我有一个表有多行,输入字段具有相同的名称

<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/

提前致谢。

2 个答案:

答案 0 :(得分:2)

使用父代替父母:

$(_this).parent().parent('tr').find('#description').val(obj.description);
来自jquery:http://api.jquery.com/parents/

.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