2010-11-29 12 views
1

Jqueryで次のTDの入力フィールドを選択したいと思います。テーブルの行を追加または削除できるため、IDまたはクラスは使用できません。Jqueryで次のTDの入力フィールドを選択する方法は?

のような、

<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[] 
} 

誰でも入力フィールドを選択する方法を知っている、〜助けてください!あなたのWebページのあなたの予想される動作の

おかげ

+2

onkeyupのようなインラインイベントを使用しないでください。jqueryは実際のjqueryスクリプトのすべての作業を実行します。 – Soviut

+1

また、あなたの質問のタイトルを言い換えれば、本当の質問ではなく、試してみると誰にも役立たない! – Soviut

答えて

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を使用し、イベントの委任も使用するためです。

$(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()メソッドは、もはやで必要とされています

0

はここにあなたの問題の可能な解決策だ(あなたが価格 * 数量するをしたいと仮定した場合)この解決策を選択し、onkeyup="..."属性をinput要素にドロップすることもできます。

See hereデモ用