111

我有这个表格,我试图从文本区域获取值。出于某种原因,它不想。

<form action="/profile/index/sendmessage" method="post" enctype="application/x-www-form-urlencoded">
    <div class="upload_form">
        <dt id="message-label"><label class="optional" for="message">Enter Message</label></dt>
        <dd id="message-element">
        <textarea cols="60" rows="5" id="message" name="message"></textarea></dd>
        <dt id="id-label">&nbsp;</dt>
        <dd id="id-element">
        <input type="hidden" id="id" value="145198" name="id"></dd>
        <dt id="send_message-label">&nbsp;</dt>
        <dd id="send_message-element">
        <input type="submit" class="sendamessage" value="Send" id="send_message" name="send_message"></dd>
    </div>
</form>


$("input.sendamessage").click(function(event) {
    event.preventDefault();

    var message = $('textarea#message').html();
    var id      = $('input#id').val();

    console.log(message + '-' + id);
});

jsfiddle

有任何想法吗?

4

12 回答 12

200

textarea 的值也采用val以下方法:

var message = $('textarea#message').val();
console.log(message);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<textarea cols="60" rows="5" id="message" name="message">
Hello,
 world!
</textarea>

于 2012-05-08T22:11:18.250 回答
28

您需要使用.val()textarea 因为它是一个元素而不是包装器。尝试

$('textarea#message').val()

更新的小提琴

于 2012-05-08T22:11:36.453 回答
22

你应该使用val()而不是html()

var message = $('#message').val();
于 2012-05-08T22:12:18.927 回答
18

在 javascript 中:

document.getElementById("message").value
于 2016-07-08T10:06:21.590 回答
5

你不需要使用textarea#message

var message = $('textarea#message').val();

你可以直接使用

var message = $('#message').val();
于 2016-05-03T10:44:59.857 回答
3

您应该在使用 val() 之前检查 textarea 是否为空,否则,您将收到未定义的错误。

if ($('textarea#message') != undefined) {
   var message = $('textarea#message').val();
}

然后,你可以对消息做任何事情。

于 2015-02-26T16:36:13.530 回答
3

你可以直接使用

var message = $.trim($("#message").val());

阅读更多@使用jQuery Val()方法获取TextArea的值

于 2018-03-27T13:01:35.610 回答
3

您还可以通过元素的name 属性获取值。

var message = $("#formId textarea[name=message]").val();
于 2020-02-05T10:35:11.297 回答
2

$('textarea#message')不能是未定义$的(当然,如果你指的是 jQuery)。

$('textarea#message')可能长度为 0,然后$('textarea#message').val()为空,仅此而已

于 2015-06-22T21:22:15.540 回答
2

所有值始终与.val().

见下面的代码:

var message = $('#message').val();
于 2016-02-07T14:39:49.973 回答
1

你不需要使用.html(). 你应该去.val()

来自以下文档.val()

.val()方法主要用于获取input,select和等表单元素的值textarea。在空集合上调用时,它返回undefined.

var message = $('#message').val();
于 2018-02-08T07:46:02.407 回答
-3

您还可以通过名称而不是 id 来获取值,如下所示:

var message = $('textarea:input[name=message]').val();
于 2018-01-15T10:54:18.293 回答