else 语句不将内容添加到文本区域


else statement not adding content into textarea

我在下面有一个函数,当单击"添加"按钮将内容添加到单个文本区域时,if 语句起作用:

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;
} 

问题是在附加的文本区域之一中添加内容时,else 语句不起作用。我想要的是,如果用户单击加号按钮并通过单击"添加"按钮添加内容,则与单击的加号按钮属于同一行的文本区域将添加内容。为此,我需要更改什么?

下面是代码 whch 显示附加的文本区域和加号按钮:

    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();'><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);                     
}

下面是 php 代码,其中显示每行的"问题内容"和"添加"按钮。当用户单击"添加"按钮时,它会将"问题内容"添加到顶部的单个文本区域中,但不添加到附加的多个文本区域中。

  <?php
    $output = "";
            while ($questionrow = mysql_fetch_assoc($questionresult)) {
    $output .= "
    <table>
          <tr>
          <td class='addtd'><button type='button' class='add' onclick='parent.addwindow();'>Add</button></td>
          </tr>";
            }
            $output .= "        </table>";
            echo $output;
            ?> 

您可以在此处查看应用程序。请按照以下步骤使用该应用程序:

  1. 单击"添加问题"按钮,然后在新行中添加文本区域。
  2. 单击您刚刚添加的表格行中的"绿色加号"按钮,将出现一个模态窗口。
  3. 模态窗口中,它显示一个搜索栏,在搜索栏中输入"AAA",然后单击"搜索"按钮
  4. 将出现您的搜索结果,单击"添加"按钮添加一行。您会发现模态窗口已关闭,但"问题"字段中的内容未添加到您单击绿色加号按钮的行内的文本区域中

如果您在顶部文本区域(水平线上方的那个)中执行了步骤,那么它确实有效,只是不适用于您刚刚添加的文本区域

你的错误之一:

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

您在页面中使用 jQuery 1.7,自 jQuery 1.7 以来,.live 方法已被弃用。您应该改用.on

您还将在生成的链接中触发plusbutton函数:

<a value="" name="plusbuttonrow[]" onclick="return plusbutton();">

这不是将任何元素作为参数传递给您的plusbutton函数存储在您期望的全局变量plusbutton_clicked中。然后没有对单击的元素的引用,因此当您在 addwindow 函数中使用 plusbutton_clicked var 时,它找不到任何元素。

保留 .on 方法或上面的 onclick 调用,以防止函数被触发两次。

可能还有其他错误(例如,您正在检查动态生成的元素不存在的 id 属性),但这是主要错误。另外,我想知道您是否没有任何截止日期来完成此操作,这是我在过去 10 周内第 3 次看到这个问题。至少你取得了一些进展,恭喜你。