0

[追加]ボタンをクリックしたときに単一のテキストエリアにコンテンツを追加する場合、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;
}

以下は、単一のテキストエリアとそのプラスボタンのコードです。

<form id="QandA" action="<?php echo htmlentities($action); ?>" method="post">

<div id="detailsBlock">
<table id="question">
<tr>
    <td rowspan="3">Question:</td> 
    <td rowspan="3">
        <textarea class="questionTextArea" id="mainTextarea" rows="5" cols="40" name="questionText"></textarea>
    </td>
</tr>
</table>

<table id="plus" align="center">
<tr>
<th>
<a onclick="return plusbutton();">
<img src="Images/plussign.jpg" width="30" height="30" alt="Look Up Previous Question" class="plusimage" id="mainPlusbutton" name="plusbuttonrow"/>
</a>
<span id="plussignmsg">(Click Plus Sign to look <br/> up Previous Questions)</span>
</th>
</tr>
</table>
</div>
</form>

問題は、以下の追加されたテキスト領域の1つにコンテンツを追加する場合、elseステートメントが機能しないことです。ユーザーが追加されたテキストエリアの横にあるプラスボタンをクリックし、[追加]ボタンをクリックしてコンテンツを追加すると、クリックされたプラスボタンと同じ行に属するテキストエリアが追加されます。コンテンツを追加します。これを行うには何を変更する必要がありますか?

以下は、追加されたテキストエリアとプラスボタンを示すコードです。

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

}

You can view application here. Please follow the steps to use the application:

  1. Click on "Add Question" button, then will add a textarea within a new row.
  2. Click on the "Green Plus" button within the table row you just added, a modal window will appear.
  3. In modal window it displays a search bar, in search bar type in "AAA" and click on "Search" button
  4. Results will appear of your search, click on "Add" button to add a row. You will find out modal window is closed but the content from the "Question" field is not added in the textarea within the row you clicked on the green plus button

If you did the steps in the top textarea (the one above the horizontal line), then it does work, it just doesn't work for textarea which you have just added

4

1 に答える 1

0

You're not passing the element which your plusbutton() function expects as parameter, that's why the function can't find the sibling element to get its contents. Try:

<a onclick='return plusbutton(this);'>
于 2012-06-03T17:24:05.627 に答える