0

我在下面有一个代码,它在一列中显示文本输入,在第二列中显示总分列,在最后一列中显示剩余分数。该表如下所示:

Marks Per Answer       Total Marks    Marks Remaining
(blank text input)      4              4
(blank text input)      6              6

但我遇到的问题是文本输入为空,它们应该显示“总分”列的值(因此第一个文本输入为 4,第二个文本输入为 6)。

此外,由于两个文本输入都包含总分,在“剩余分数”列下,两行都应显示 0。(对于文本输入的第一行 4 减去总分下的 4,第一行剩余分数为 0。对于第二行 6总分下的文本输入减去 6 使第二行的剩余分数为 0)

所以表格应该如下所示:

Marks Per Answer              Total Marks    Marks Remaining
(text input value=4)            4              0
(blank text input value=6)      6              0

我的问题是,如何通过更改下面的 jquery 来解决上述两个步骤:

$(function() {   
    //alert("here");         
    var questions = $('#markstbl td[class*="_ans"]').length;

    //disable single entry
    for (var i=0;i<=questions;i++){   
    if($("[class*=q"+i+"_mark]").length ==1){
    var t_marks = $("[class*=q"+i+"_ans]").html();
    //alert(t_marks);
    alert(t_marks);
    $("[class*=q"+i+"_mark]").val(t_marks).attr("disabled","disabled");
    //$("[class*=q"+i+"_mark]").attr("disabled","disabled");
    }                    
    }
    }

下面是动态 HTML 表格:

<table border='1' id='markstbl'>
<thead>
<tr>
<th class='answermarksth'>Marks per Answer</th>
<th class='totalmarksth'>Total Marks</th>
<th class='noofmarksth'>Marks Remaining</th>
</tr>
</thead>
<tbody>

<tr class="questiontd">
<td class="answertd" name="answers[]"><?php echo$searchAnswer[$key]?></td>
<td class="answermarkstd">
<input class="individualMarks q<?php echo$questionId?>_mark_0"  q_group="1" name="answerMarks[]" id="individualtext" type="text" />
</td>
<?php
    if($questionId != $prev_ques){
    ?>
<td class="totalmarkstd" rowspan="<?php echo$row_span[$questionId]?>"><?php echo$totalMarks[$key]?></td>
<td class="noofmarkstd q<?php echo$questionId?>_ans_text"  q_group="1" rowspan="<?php echo$row_span[$questionId]?>"><?php echo"<strong>".$searchMarks[$key]."</strong>"?></td>
<?php
    }
    ?>
</tr>
<?php
$prev_ques = $questionId;
}
?>
</tbody>
</table>

目前在 jquery 函数中,我正在尝试使用 t_marks 变量来显示文本输入中的值,但在表格行中的每个 SINGLE 文本输入中都没有显示任何内容

4

1 回答 1

0

我想我已经为你弄清楚了。见http://jsfiddle.net/jhfrench/NsWRv/

我使用 jQuery 循环遍历分类为 '.individualMarks' 的输入元素('input.individualMarks').each(...),然后用于parent()查找输入的父 td。从那里,我得到那个td 的兄弟姐妹的值,然后执行简单的数学运算并将结果值分配给“剩余标记”列。

我通过分配 onChange 事件更进一步,每次操作输入字段时都会重新触发更新函数。

如果此页面上有很多字段,您可能会花时间将其转换为插件,以便您可以针对 jQuery 对象执行它并仅更新与更新的输入字段相关的行(现在它会重新计算所有输入/表更改任何输入的行)。

我不熟悉 PHP,但我认为您的原始代码会导致重复的 ID。尽量避免这种情况!

于 2012-11-22T03:50:32.430 回答