2016-04-18 14 views
2

最初のスタックオーバーフローに関する質問はここにあります。私は似たような問題について十数個の質問を読んだことがありますが、私が苦労している問題とはまったく一致していません。 My Web Appは、さまざまな課題のスコアを記録するための「教師用グレードブック」です。このビューには、学生とその得点を列挙した大きなテーブルが表示されます。ユーザーが「クラス期間」ボタンをクリックすると、テーブルが変更され、新しいクラス期間の学生と得点が表示されます。次のコードを使用して、入力フィールドは更新されません。多くの入力フィールドの値を変更します。

$scope.changeClassPeriod = function(classPerIndex) { 
    $scope.currClassPer = classPerIndex; 
    var thisClassPeriod = $scope.classPeriods[$scope.currClassPer]; 
    for (var i = 0; i < thisClassPeriod.assignments.length; i++) { 
     $("#head"+i).text(thisClassPeriod.assignments[i].assignmentName); 
    }; 
    for (var i = 0; i < thisClassPeriod.students.length; i++) { 
     for (var j = 0; j < thisClassPeriod.assignments.length; j++) { 
      $($('#scoresheet')[0].rows[i+1].cells[j+2]).val(thisClassPeriod.students[i].scores[j]); 
     }; 
    }; 
}; 

すべてのTDSは、スコアが表示されるように、私は「テキスト」コマンドの代わりに「ヴァル」コマンド、ビューの更新を使用するときに奇妙なことが、あります私は期待しています。欠点は、この方法ではすべての入力フィールドをテキストフィールドに変更するので、ユーザーはこれを編集できなくなることです。

$($('#scoresheet')[0].rows[i+1].cells[j+2]).text(thisClassPeriod.students[i].scores[j]); 

は、スタックオーバーフロー上の他の場所に掲載同様の質問では、他のいくつかのヘルパーは一意のIDが各入力フィールドのために必要であることを述べました。それは入力フィールドに固有の問題ですが、テキストフィールドには問題はありませんか?

+0

ページ上のすべての要素に対して、一意のIDが常に必要です。重複するIDを持つことはできません.jQueryは、指定されたIDを持つ最初の要素のみをフェッチします。 2番目のコードスニペットは構文エラーのため動作しません。 – adeneo

+0

構文エラーを修正するために編集されました。 '#scoresheet'の括弧を閉じる必要があります。 'text'は、以下のVoidの答えで 'val'に戻すこともできます。 –

答えて

1

.text()が機能していて、.val()が機能していない場合は、入力フィールドの他の要素をターゲットにしています。これを試してください:

$($('#scoresheet')[0].rows[i+1].cells[j+2]).find('input').val(thisClassPeriod.students[i].scores[j]); 

残りのコードが問題ない場合は、この作業を行う必要があります。

+0

はい!これはうまく仕事をしました。ありがとうございました。 –

関連する問題