0

以下のコードは、モーダル ウィンドウからテキストエリアにテキストを追加する際に問題なく動作します。

<script type="text/javascript">

var plusbutton_clicked;

function insertQuestion(form) {

    var $tbody = $('#qandatbl > tbody'); 
    var $tr = $("<tr class='optionAndAnswer' align='center'></tr>");
    var $plusrow = $("<td class='plusrow'></td>");
    var $question = $("<td class='question'></td>");


    $('.questionTextArea').each( function() {

    var $this = $(this);
    var $questionText = $("<textarea class='textAreaQuestion'></textarea>").attr('name',$this.attr('name')+"[]")
                   .attr('value',$this.val());

    $question.append($questionText);

    });

        $('.plusimage').each( function() {

    var $this = $(this);
    var $plusimagerow = $("<a onclick='return plusbutton(this);'><img src='Images/plussign.jpg' width='30' height='30' alt='Look Up Previous Question' class='imageplus'/></a>").attr('name',$this.attr('name')+"[]")
                   .attr('value',$this.val());

    $plusrow.append($plusimagerow);

    });

    $tr.append($plusrow);
    $tr.append($question);
    $tbody.append($tr); 

    form.questionText.value = "";

    $('.questionTextArea').val('');


}


function closewindow() {     

    $.modal.close(); 
    return false;
} 

$('.plusimage').live('click', function() {
    plusbutton($(this));
});


function plusbutton(plus_id) {
    // Set global info
    plusbutton_clicked = plus_id;
    // Display an external page using an iframe
    var src = "previousquestions.php";
    $.modal('<iframe src="' + src + '" style="border:0;width:100%;height:100%;">');
    return false;
}


function addwindow(questionText) { 

    if(window.console) console.log();

    if($(plusbutton_clicked).attr('id')=='mainPlusbutton') { 
        $('#mainTextarea').val(questionText); 
        } else { 
            $(plusbutton_clicked).parent('td').next('td.question').find('textarea.textAreaQuestion').val(questionText);
            }

    $.modal.close(); 
    return false;
} 


</script>

しかし、問題は、必要なこのコードを下に含めるとfunction insertQuestion(form) {、テキストエリアへのテキストの追加が停止することです。なぜこれを行うのですか?

var $qid = $("<td class='qid'>" + qnum + "</td>" );

...

$tr.append($qid);

$qid は各行の質問番号なので、行が追加されるたびに質問番号がプラス 1 ずつ追加されます。

Blow は、テキストエリアを上からテーブル行に追加する場所の HTML コードです。

<table id="question">
<tr>
    <th colspan="2">
        Question Number <span class="questionNum">1</span>
        <input type="hidden" class="num_questions" name="numQuestion" value="1">
    </th>
</tr>
<tr>
    <td rowspan="3">Question:</td> 
    <td rowspan="3">
        <textarea class="questionTextArea" id="mainTextarea" rows="5" cols="40" name="questionText"></textarea>
    </td>
</tr>
</table>

アップデート:

両方のアプリケーションへのリンクを含めました。動作するが $qid を含まないものと、$qid を含み動作しないが動作する必要があるものです。両方のアプリケーションで手順に従ってください。自分でテストして、何が起こっているかを確認できます。

アプリケーション 1 : $qid はありませんが、機能しています。

アプリケーション 2 : $qid が含まれていますが、機能していません:

両方のアプリケーションについて、以下の手順に従います。

  1. [質問を追加] ボタンをクリックすると、新しい行にテキストエリアが追加されます。
  2. 追加したテーブル行内の「グリーン プラス」ボタンをクリックすると、モーダル ウィンドウが表示されます。
  3. モーダル ウィンドウに検索バーが表示されます。検索バーに「AAA」と入力し、[検索] ボタンをクリックします。
  4. 検索結果が表示されるので、「追加」ボタンをクリックして行を追加します。モーダルウィンドウが閉じていることがわかりますが、緑色のプラスボタンをクリックした行内のテキストエリアに「質問」フィールドのコンテンツが追加されていません
4

2 に答える 2

1

明示的にtd値を設定してみてください

var $qid = $("<td class='qid'></td>" ).text(qnum);  
$tr.append($qid);

そして、からのテキスト設定コードを置き換えます

$(plusbutton_clicked).parent('td').next('td.question').find('textarea.textAreaQuestion').val(questionText); 

$(plusbutton_clicked).closest('tr').find('textarea.textAreaQuestion').val(questionText); 
于 2012-06-03T10:49:46.733 に答える
0

テキストで試すと簡単に試すことができます:

var $qid = $("<td class='qid'>"+ qnum + "</td>" );  
$tr.append($qid);

また

$("<td class='qid'></td>" ).text('hello').appendTo($tr);  
于 2012-06-03T10:57:10.610 に答える