表行导致内容添加不起作用

A table row is causing content adding to not work

本文关键字:添加 不起作用      更新时间:2023-09-26

>我在下面有一段代码,在将文本从模态窗口添加到文本区域时工作正常:

<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。

吹气是将文本区域从顶部附加到表格行中的 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. 将出现您的搜索结果,单击"添加"按钮添加一行。您会发现模态窗口已关闭,但"问题"字段中的内容未添加到您单击绿色加号按钮的行内的文本区域中

尝试显式设置 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); 

如果您尝试使用文本,您可以轻松尝试:

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

$("<td class='qid'></td>" ).text('hello').appendTo($tr);