2

tdとボタンを含むテーブルがtextareaあり、AJAX 経由でボタンのクリック時にテキストエリアの値を送信したいのですが、ボタンに最も近いテキストエリアを選択する際に問題があります。

JavaScript

$(document).ready(function () {
    $(document).on("click", ".addR", function () {
        paperID = $(this).attr("paperID");
        commentID = $(this).attr("commentID");
        text = $(this).closest("textarea").val();
        $.ajax({
            data: {
                paperID: paperID,
                commentID: commentID,
                text: text
            },
            type: 'POST',
            url: 'add_rebuttal.php',
            success: function (response) {
                alert(response);
                window.location.href = window.location.href;
            }
        });
    });
});

PHP:

while ($row = mysql_fetch_assoc($comments)) {
    echo "<tr><td>{$row['text']}</td>";
?>
    <td><br /><textarea class="reText" rows='5' name='reText' id='reText' style='width:98%;' type='text'></textarea>
    <button commentID="<?php echo $row['comment_id'] ?>" paperID="<?php echo $paper_id ?>" class="addR" type="button" name="addR" id="addR">send rebuttal</button></td></tr> <?
}

問題は$(this).closest("textarea").val();return undefined です。どうすればこの問題を解決できますか?

4

2 に答える 2

6

closest() は、最も近い祖先を返します。テキストエリアはボタンの祖先ではなく、前の兄弟です。代わりに、次を試してください。

text = $("textarea", $(this).parent()).val();
于 2012-07-16T01:04:13.063 に答える
1

テキストエリアのテキストを取得するには、text()代わりに使用する必要がありval()ます。Scotty が指摘したように、必要なテキストエリアは祖先ではないため、使用しないでくださいclosest()

于 2012-07-16T01:01:01.163 に答える