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

問題は、追加されたテキストエリアの 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);                     

}

以下は、各行に「QuestionContent」ボタンと「追加」ボタンを表示する php コードです。ユーザーが「追加」ボタンをクリックすると、上部の単一のテキストエリアに「QuestionContent」が追加されますが、追加された複数のテキストエリアには追加されません。

  <?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. 検索結果が表示されるので、「追加」ボタンをクリックして行を追加します。モーダルウィンドウが閉じていることがわかりますが、緑色のプラスボタンをクリックした行内のテキストエリアに「質問」フィールドのコンテンツが追加されていません

上部のテキストエリア (水平線の上にあるもの) で手順を実行した場合は機能しますが、追加したばかりのテキストエリアでは機能しません。

4

1 に答える 1

1

あなたのエラーの1つ:

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

ページで jQuery 1.7 を使用しています。この.liveメソッドは jQuery 以来廃止されてい1.7ます。.on代わりに使用する必要があります。

plusbuttonまた、生成されたリンクで関数をトリガーしています。

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

関数にパラメーターとして要素を渡していないものは、期待しているplusbuttonグローバル変数に格納されます。クリックされた要素への参照がないため、関数で varplusbutton_clickedを使用しても要素が見つかりません。plusbutton_clickedaddwindow

関数が 2 回起動されるのを防ぐために、上記の.onメソッドまたは呼び出しを保持してください。onclick

他のエラーもあるかもしれません (たとえば、動的に生成された要素に存在しない id 属性をチェックしています) が、これが主なエラーです。また、これを終わらせる期限はないのでしょうか。この 3 週間でこの質問を見るのは 10 回目です。

于 2012-06-02T01:27:02.023 に答える