2012-05-08 4 views
52

У меня есть эта форма и я пытаюсь получить значение из области текста. по какой-то причине он этого не хочет.Как получить значение текстового поля в jquery?

<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

какие-либо идеи?

ответ

97

Значение текстового поля также принимается с val методом:

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

Вы должны использовать .val() для текстового поля, как это элемент, а не обертка. Попробуйте

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

Updated fiddle

15

вы должны использовать val() вместо html()

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

Вы должны проверить текстовое поле является пустым, прежде чем использовать Val() в противном случае, вы получите неопределенное сообщение об ошибке.

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

Тогда вы могли бы делать все с сообщением.

1

$('textarea#message') не может быть undefined (если по $ вы имеете в виду jQuery, конечно).

$('textarea#message') может иметь длину 0, а затем $('textarea#message').val() будет пустым, это все

0

все значения всегда берется с .val();

увидеть код Bello

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

Вам не нужно использовать textarea#message

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

Вы можете непосредственно использовать

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

в JavaScript:

document.getElementById("message").value 
0

Вы также можете получить значение по имени, а не идентификатор, как это:

var message = $('textarea:input[name=message]').val(); 
0

Вам не нужно использовать .html(). Вы должны пойти с .val().

Из дока из .val():

Метод .val() в основном используется для получения значений элементов формы, таких как input, select и textarea. Когда вызывается в пустой коллекции, он возвращает undefined.

var message = $('#message').val(); 
Смежные вопросы