2

ここにjsfiddleがあります

jsfiddledemoを見るときに私が抱えている問題は、テキスト入力の1つ(質問1)に数値を入力すると、計算は実行されますが、列に別の方法で回答が表示されることです。

上部のテキスト入力に数字の2を入力すると、「Marks Remaining 3」が表示されますが、代わりに「Marks Remaining」のtxtが削除され、数字の3だけが表示されます(太字ではありません)。

だから私の質問は、計算の答えを表示するときに、なぜ遠端の列の形式を変更するのですか?

以下はjquery関数です。

Jquery:

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

        //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);
                $("[class*=q" + i + "_mark]").val(t_marks)
                    .attr("disabled", "disabled");
                //$("[class*=q"+i+"_mark]").attr("disabled","disabled");
            }
        }

        //find each question set and add listeners
        for (var i = 0; i <= questions; i++) {
            $('input[class*="q' + i + '"]').keyup(function () {
                var cl = $(this).attr('class').split(" ")[1]
                var questionno = cl.substring(cl.indexOf('q') + 1, cl.indexOf('_'));
                var tot_marks = $(".q" + questionno + "_ans_org").val();
                //alert(tot_marks);
                var ans_t = 0;
                $("[class*=q" + questionno + "_mark]").each(function () {
                    var num = (isNaN(parseInt($(this).val()))) ? 0 : parseInt($(this).val());
                    ans_t += parseInt(num);
                });
                ans_t = tot_marks - ans_t;
                //alert(ans_t);
                //var fixedno = tot_marks;
                var ans = (parseInt(ans_t) < 0) ? tot_marks : ans_t;
                $(".q" + questionno + "_ans").val(ans);
                $(".q" + questionno + "_ans_text").html(ans);
            });
        }
    });​

以下はダイナミックHTMLテーブルです。

HTML:

  <body>
  <table border='1' id='markstbl'>
    <thead>
      <tr>
        <th class='questionth'>Question No.</th>

        <th class='questionth'>Question</th>

        <th class='answerth'>Answer</th>

        <th class='answermarksth'>Marks per Answer</th>

        <th class='noofmarksth'>Total Marks Remaining</th>
      </tr>
    </thead>

    <tbody>
      <?php
      $row_span  = array_count_values($searchQuestionId);
      $prev_ques = '';
      foreach ($searchQuestionId as $key => $questionId) {
      ?>

      <tr class="questiontd">
        <?php
            if ($questionId != $prev_ques) {
        ?>

        <td class="questionnumtd" name="numQuestion" rowspan=
        "<?php echo $row_span[$questionId]; ?>"><?php
                echo $questionId;
        ?><input type="hidden" name="q<?php echo $questionId; ?>_ans_org" class=
        "q<?php echo $questionId; ?>_ans_org" value=
        "<?php echo $searchMarks[$key]; ?>" /><input type="hidden" name=
        "q<?php echo $questionId; ?>_ans" class=
        "q<?php echo $questionId; ?>_ans" value=
        "<?php echo $searchMarks[$key]; ?>" /></td>

        <td class="questioncontenttd" rowspan="<?php echo $row_span[$questionId]; ?>">
        <?php
                echo $searchQuestionContent[$key];
        ?></td><?php
            }
        ?>

        <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="noofmarkstd q<?php echo $questionId; ?>_ans_text" q_group="1"
        rowspan="<?php echo $row_span[$questionId]; ?>"><?php
                echo $searchMarks[$key];
        ?></td><?php
            }
        ?>
      </tr><?php
          $prev_ques = $questionId;
      }
      ?>
    </tbody>
  </table>
</body>

アップデート:

以下は、最初に開いたときのページの外観です。

ここに画像の説明を入力してください

以下に、テキスト入力に数値を入力すると右側の終了列に変化が表示され、計算が行われ、終了列に回答が表示されます。

ここに画像の説明を入力してください

4

1 に答える 1

1

次のことを行う場合:

$(".q" + questionno + "_ans_text").html(ans);

数字だけに置き換え<strong>Marks Remaining:<br/>5</strong>ています。簡単な解決策は、番号をラップする別のタグを追加し、そのタグのテキストのみを変更することです。タグを削除するstrongと、形式が異なります

<strong>Marks Remaining:<br/><span class="ans">5</span></strong>
$(".q" + questionno + "_ans_text span.ans").html(ans);

または、新しいhtmlを解析できます。

var answerText='<strong>Marks Remaining:<br/>'+ans+'</strong>';
$(".q" + questionno + "_ans_text").html(answerText);
于 2012-11-17T01:46:26.683 に答える