>我有下表
<tr>
<td data-toggle="tooltip" title="Not Started"><img src="images/small_info_icon.png"></td>
<td>Demo Demo</td>
<td>January</td>
<td class="updaterow"><textarea class="form-control" rows="5" id="notes34455" name="editcomments">Not Started</textarea></td>
<td id="34455"><button type="button" id="updatestatus" class="btn btn-info btn-sm">Update</button> </td>
</tr>
我想使用 jquery 来获取文本区域的值。我正在使用以下内容,但它给出了未定义。
$("button#updatestatus").click(function(){
var id = $(this).closest('td').attr('id');
var data = $(this).closest("updaterow").text;
alert(data);
var data = {
id: id,
};
$.ajax({
type: "POST",
url: "updatestatus.php",
data: data
}).done(function(msg) {
console.log(msg);
});
是否可以获取文本区域的文本值?
这就是你想要的
$("button#updatestatus").click(function(){
var data = $(this).parent().prev("td.updaterow").find("textarea").val();
alert(data);
});
这是一个例子
$("button#updatestatus").click(function(){
var data = $(this).parent().prev("td.updaterow").find("textarea").val();
alert(data);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<html>
<table>
<tr>
<td data-toggle="tooltip" title="Not Started"><img src="images/small_info_icon.png"></td>
<td>Demo Demo</td>
<td>January</td>
<td class="updaterow"><textarea class="form-control" rows="5" id="notes34455" name="editcomments">Not Started</textarea></td>
<td id="34455"><button type="button" id="updatestatus" class="btn btn-info btn-sm">Update</button> </td>
</tr>
</table>
</html>
>.closest()
查找与选择器匹配的最接近的包含元素。 .updaterow
不包含button#updatestatus
,所以它不会找到它。 .updaterow
是前一个td
,所以它应该是:
var data = $(this).closest("tr").siblings(".updaterow").text();
您还忘记了.updaterow
中的.
和.text()
中的()
.
这就是你需要的 -
$(this).closest('tr').find('textarea').val();
这是同一个小提琴 - https://jsfiddle.net/v44rzxLo/1/。附带说明一下,多个元素不要使用相同的 ID。