2012-03-30 5 views
0

現在の要素の上にある要素から指定されたフィールドを現在の要素の一致するフィールドにコピーするjquery関数を作成しようとしています。具体的には、いくつかのフィールドがあるテーブルを吐き出しているasp.netリピーターがあり、「上記と同じ」機能が必要です。私はまだjqueryの新しいですし、私はそれにいくつかの問題を抱えています。ここで私が現在しようとしていることのいくつかの擬似コードは、あなたがそれを知っているか、単にこれを動作させるように修正すれば、より良い方法を提案することができます。Jqueryを使って複数のフィールドの値をコピーする

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は、私はので、私は「最も近い」と、各テーブルには「containingTableを」クラスを持っているとそれを見つけることができるテーブルの周りに置くだけdiv要素です。 "fieldA"、 "fieldB"などをフィールドにクラス名として入れて、値を得るためにそれらを見つけることができました。

私がいる問題は、上記の4行目にjavascriptのエラーです:$電流は

EDITを定義されていません。コメントあたりのライン4を更新しました。それは今働く。ありがとうございました。

+1

それは 'でなければなりません(現在の).find( 'FIELDA ')$はヴァル($(前回).find(' FIELDA')のval());' –

+0

はたぶん上のデバッグを実行しますコードを追加して、rowIdとcurrentの値を監視します。 rowIdの値が、式によって返される要素の数を超える値に設定されているかどうかを確認してください。あなたはval()を代入することができないので上記の人は正しいです。=あなたは割り当てられる値を渡す必要があります。 –

答えて

3

.val()左辺として使用することはできません。私は従いますが、この作品はあなたのためでしょう

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

これは知っておきたいことですが、私はまだ$ currentが定義されていません。私は2行目が失敗していると思う。 – William

+0

ご覧のとおり、コードには '$ current'はありません。したがって、エラーはあなたが投稿したコードに起因していません。 – ThiefMaster

+0

私はそれが私の混乱の一部であることを知っています。私のコードは別のクラス名でしかありません。私は、FireFoxのエラーコンソールが変わっているのか何か分かっているのか分かりません。 – William

-1

正確にわからない:新しい値を設定するには、代わりに引数として渡しますか?

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()); 
    }); 
} 
関連する問題