如何使用Jquery在下一个TD中选择输入字段?

时间:2010-11-29 07:03:22

标签: javascript jquery

我想用Jquery在下一个TD中选择一个输入字段。我不能使用ID或类,因为可以添加或删除表的行。

喜欢,

 <tr>
<td><input type='text' name='price[]' onkeyup = 'getTest(this)' /> </td>
<td><input type='text' name='qty[]' onkeyup = 'getPrice(this)' value='1' /> </td>
<td><input type='text' name='amount[]' /> </td>
</tr>

function getTest(obj){
//I want to select qty[] and amount[]
}

function getPrice(obj){
//I want to select price[] and amount[]
}

任何人都知道如何选择输入字段,请帮忙〜!

由于

3 个答案:

答案 0 :(得分:3)

working demo 您预期的​​网页行为。

答案 1 :(得分:0)

Chinmayee的答案比这个好得多,但是如果你不想改变你的任何HTML标记,你可以直接将它放到你的JavaScript中,它会起作用:

    function getTest(obj) {
        var tr = $(obj).closest('tr');
        var qty = tr.find('input[name="qty[]"]');
        var amount = tr.find('input[name="amount[]"]');

        console.log('qty: ' + qty.val());
        console.log('amount: ' + amount.val());

    }

    function getPrice(obj) {
        var tr = $(obj).closest('tr');
        var price = tr.find('input[name="price[]"]');
        var amount = tr.find('input[name="amount[]"]');

        console.log('price: ' + price.val());
        console.log('amount: ' + amount.val());
    }

但Chinmayee的答案比我的更好的原因是因为它使用了不引人注目的JavaScript,它也使用了事件委托,所以它会表现得更好。

答案 2 :(得分:0)

以下是您的问题的可能解决方案(假设您希望金额 价格 * qty ):

$(document).ready(function(){
  $('[name="price[]"], [name="qty[]"]').live('keyup', function(){
    var inputs = $(this).closest('tr').find('input');
    $(inputs[2]).val($(inputs[0]).val()*$(inputs[1]).val());
  });
});

此解决方案不再需要getTest()和getPrice()方法,您也可以删除onkeyup="..."元素上的input属性。

See here用于演示。