0

以下は、アプリケーションで表示したテーブルの例です。

Marks Per Answer               Total Marks    Marks Remaining

(blank text input)              
(blank text input)               6              6           

(blank readonly text input)      4              0

私が抱えている問題は、テーブル内の読み取り専用のテキスト入力は、[合計マーク数]列の下の数値と同じ値を表示する必要があるということです。したがって、テーブルは次のようになります。

Marks Per Answer                   Total Marks    Marks Remaining

(blank text input)                    
(blank text input)                    6              6

(readonly text input value='4')       4              0

私の質問は、読み取り専用のテキスト入力で正しい値を表示するために、以下のコードで何を変更する必要があるかということです。

if ($("[class*=q" + i + "_mark]").length == 1) {
    //alert(t_marks);
    var t_marks = $("[class*=q" + i + "_ans]");
    var t_marksHtml = t_marks.html();
    t_marks.html("0");
    $("[class*=q" + i + "_mark]").val(t_marksHtml).attr('readonly', true);
    //$("[class*=q"+i+"_mark]").attr('readonly',true);
}

以下は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="answermarkstd">
<input class="individualMarks q1_mark_0"  q_group="1" name="answerMarks[]" id="individualtext" type="text" />
</td>
<td class="totalmarkstd" rowspan="2">6</td>
<td class="noofmarkstd q1_ans_text"  q_group="1" rowspan="2"><strong>5</strong></td>
</tr>

<tr class="questiontd">
    <td class="answertd" name="answers[]">D</td>
<td class="answermarkstd">
<input class="individualMarks q1_mark_0"  q_group="1" name="answerMarks[]" id="individualtext" type="text" />
</td>
</tr>

<tr class="questiontd">
<td class="answermarkstd">
<input class="individualMarks q2_mark_0"  q_group="1" name="answerMarks[]" id="individualtext" type="text" />
</td>
<td class="totalmarkstd" rowspan="1">6</td>
<td class="noofmarkstd q2_ans_text"  q_group="1" rowspan="1"><strong>5</strong></td>
</tr>
</tbody>
</table>
4

1 に答える 1

1

テーブルのマークアップ(スパン付き)が醜いため、残りのマークの適切な数を選択するのが難しいため、このようなものが必要なようです。ここでは、-1を許可するバグ、他のすべてが正常に機能します。

入力マークと残りのマークの関係が汚れているため、マークアップを確認する必要があります。

サンプル

$('.individualMarks').change(function() {
    t = $(this);
    console.log(t.parents('tr').get(0));
    var remain_e = t.parents('tr').children('.noofmarkstd').last().children();
    console.log(remain_e.get(0));
    if (remain_e.length < 1) {
        var c = 2;
        var m = $(this);
        while (remain_e.length < 1 && c < 100) {

            remain_e = m.parents('tr').prev().children('.noofmarkstd').last().children();
            m = m.parents('tr').prev();
            c++;
        }
        if (c >= 100) {
            console.error('error finding element!');
            return;
        }
    }
    remain = remain_e.html();
    remain--;
    if (remain <= 0) {
        t.attr('readonly', "true"), remain_e.parents('tr').find('input').attr('readonly', "true")
    };
    remain_e.html(remain);
});​
于 2012-12-02T07:32:50.550 に答える