2010-11-29 12 views
1

Ich möchte ein Eingabefeld im nächsten TD mit Jquery auswählen. Ich kann ID oder Klasse nicht verwenden, da die Zeile der Tabelle hinzugefügt oder entfernt werden kann.Wie wähle ich ein Eingabefeld im nächsten TD mit Jquery?

wie

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

jemand wissen, wie die Eingabefelder wählen, bitte helfen Sie ~!

Dank

+2

Verwenden Sie keine Inline-Ereignisse wie onkeyup, lassen Sie jquery alle Arbeiten im eigentlichen jquery-Skript ausführen. – Soviut

+1

Ändern Sie auch Ihren Fragetitel, es ist keine echte Frage und hilft niemandem, wenn sie versuchen und suchen! – Soviut

Antwort

0

Chinmayee Antwort ist viel besser als diese, aber wenn Sie wollen alle Ihre HTML-Aufschlags nicht ändern, können Sie einfach diese in Ihrem JavaScript fallen und es wird funktionieren:

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()); 
    } 

Aber der Grund, warum Chinmayee's Antwort besser ist als meine, ist, weil es unaufdringliches JavaScript verwendet, und es nutzt auch Ereignisdelegierung, damit es besser funktioniert.

0

Hier ist eine mögliche Lösung für das Problem (vorausgesetzt, Sie wollen MengePreis * Menge sein):

$(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()); 
    }); 
}); 

Ihre getTest() und getPrice() Methoden sind nicht mehr erforderlich mit Diese Lösung und Sie können auch die onkeyup="..." Attribute auf die input Elemente fallen lassen.

See here für eine funktionierende Demo.

Verwandte Themen