更改许多输入字段的值

时间:2016-04-18 23:00:58

标签: javascript jquery angularjs forms input

这里是第一个Stack Overflow问题。我已经阅读了十几个关于类似问题的问题,但没有一个问题与我正在努力解决的问题完全匹配。我的Web应用程序是一个“教师成绩簿”,用于跟踪各种作业的分数。该视图显示了一个列出学生的大表及其分数。当用户单击“课程期间”按钮时,该表格应更改为显示学生和新课程期间的分数。使用以下代码,输入字段将不会更新:

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

奇怪的是,当我使用“Text”命令而不是“Val”命令时,视图会更新,以便所有tds显示我期望的分数。缺点是,这种方法将所有输入字段更改为文本字段,因此用户无法再编辑它们。

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

在Stack Overflow其他地方发布的类似问题中,其他一些帮助者提到每个输入字段都需要唯一的id。这是输入字段特有的问题,而不是文本字段的问题吗?

1 个答案:

答案 0 :(得分:1)

如果.text()正在运行且.val()无效,那么您的目标是其他元素,然后是输入字段。试着这样做:

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

如果您的其余代码没问题,那么这应该可以胜任。