0

以下のコードでは、1 つの列にテキスト入力を表示し、2 番目の列に合計点数の列を表示し、最後の列に残りの点数を表示します。表は次のようになります。

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

しかし、私が抱えている問題は、テキスト入力が空であり、「合計マーク」列の値を表示する必要があることです(最初のテキスト入力では4、2番目のテキスト入力では6)。

また、両方のテキスト入力には合計マークが含まれているため、[Marks Remaining] 列の下で、両方の行に 0 が表示されます。テキスト入力から合計点の下の 6 を引いた値は、2 行目の残りの点数を 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 に答える