2012-03-30 8 views
0

Ich versuche, eine Jquery-Funktion zu schreiben, die angegebene Felder aus dem Element über dem aktuellen in übereinstimmende Felder des aktuellen Elements kopiert. Insbesondere habe ich einen asp.net Repeater, der Tabellen mit ein paar Feldern ausspuckt und ich möchte eine "Wie oben" Funktion. Ich bin aber immer noch neu in Jquery und ich habe Probleme damit. Hier ist ein paar psudo-Code für das, was ich gerade versuche zu tun, fühle mich frei, eine bessere Methode vorzuschlagen, wenn du es weißt, oder einfach das Problem zu beheben.Verwenden von Jquery zum Kopieren der Werte mehrerer Felder

function CopyPrevious(sender, rowId) { 
    var current = $(sender).closest('#wrappingDiv').find('.containingTable').eq(rowId); 
    var previous = $(sender).closest('#wrappingDiv').find('.containingTable').eq(rowId - 1); 
    $(current).find('.fieldA').val($(previous).find('.fieldA').val()); 
} 

wrappingDiv ist nur ein div ich um den Tisch gelegt, so konnte ich es mit „Nähe“ finden und jede Tabelle hat die Klasse „containingTable“. Ich habe "fieldA", "fieldB" usw. als Klassennamen auf die Felder gesetzt, damit ich sie finden kann, um die Werte zu erhalten.

Das Problem, das ich habe, ist ein Javascript-Fehler in Zeile 4 der oben: aktualisiert die Zeile 4 pro Kommentare: $ Strom nicht

EDIT definiert ist. Es funktioniert jetzt. Vielen Dank.

+1

Es sollte '$ (aktuell) .find ('FieldA. ') Val ($ (iV) .find (' FieldA.') Val()..),' –

+0

Vielleicht eine Debug laufen auf der Code und fügen Sie eine Überwachung für den Wert von rowId und aktuell ein. Überprüfen Sie, ob der Wert von rowId auf einen Wert gesetzt wird, der die Anzahl der vom Ausdruck zurückgegebenen Elemente übersteigt. Und der obige Typ ist korrekt, weil Sie val() nicht mit = zuweisen können, müssen Sie den Wert übergeben, um zugewiesen zu werden. –

Antwort

3

Sie können .val() nicht als lvalue verwenden. Um einen neuen Wert zu setzen, übergeben Sie es stattdessen als Argument:

$(current).find('.fieldA').val($(previous).find('.fieldA').val()); 
+0

Das ist gut zu wissen, aber ich bekomme immer noch $ Strom ist nicht definiert. Ich denke, Zeile 2 versagt. – William

+0

Wie Sie sehen können, gibt es in Ihrem Code keinen '$ current'. Der Fehler wird also nicht durch den von Ihnen geposteten Code verursacht. – ThiefMaster

+0

Ich weiß, das ist Teil meiner Verwirrung. Was ist da oben ist mein Code nur mit verschiedenen Klassennamen. Ich weiß nicht, ob die Fehlerkonsole von FireFox seltsam ist oder was. – William

-1

Nicht genau sicher, dass ich folge, aber würde dies für Sie arbeiten?

function CopyPrevious(sender, rowId) { 
    var current = $(sender).closest('.wrappingDiv').find('.containingTable input'); 
    var previous = $(sender).closest('.wrappingDiv').prev().find('.containingTable input'); 
    current.each(function(){ 
     ($this).val(previous.is('.' + $(this).attr('class')).val()); 
    }); 
} 
Verwandte Themen