2012-07-16 63 views
1

我有一個表td其中包含一個textarea和一個按鈕,我想通過AJAX發送按鈕點擊時的textarea值,但是在按鈕上選擇最接近的textarea時出現問題。選擇離按鈕最近的textarea

的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();回報不確定的,所以我怎麼能解決這個問題?

回答

5

closest()返回最接近的祖先。你的textarea不是你的按鈕的祖先,它是以前的兄弟姐妹。相反,嘗試:

text = $("textarea", $(this).parent()).val(); 
+0

的一個完美工作,謝謝。 – 2012-07-16 01:05:57

1

要獲得文本區域的文本,您必須使用text()而不是val()。正如Scotty所指出的,你想要的textarea不是祖先,所以不要使用closest()

+0

同樣的問題,這是第一個textarea的值取不對應按鈕 – 2012-07-16 01:04:25