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) {,那么它会停止将文本添加到 textarea 中,为什么要这样做?

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

...

$tr.append($qid);

$qid 是每一行的题号,所以每增加一行,每次加一题号。

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 回答