2012-05-08 18 views
52

Ich habe dieses Formular und ich versuche, den Wert aus dem Textbereich zu erhalten. Aus irgendeinem Grund will es nicht.Wie bekomme ich den Wert einer Textarea in 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); 
}); 

oder jsfiddle

irgendwelche Ideen?

Antwort

97

Wert des Textbereiches ist auch mit val Verfahren genommen:

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

Sie müssen .val() für Textbereich verwenden, da es ein Element, und nicht ein Wrapper ist. Versuchen

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

Updated fiddle

15

Sie val() statt html()

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

verwenden sollten, sollten Sie prüfen, die Textarea null ist, bevor Sie val() verwenden, sonst werden Sie nicht definierte Fehler.

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

Dann könnten Sie was auch immer mit der Nachricht tun.

1

$('textarea#message') kann nicht undefined sein (wenn durch $ Sie jQuery natürlich meinen).

$('textarea#message') kann sein Länge 0 und dann würde $('textarea#message').val() leer sein, das ist alles

0

alle Werte immer mit .val genommen(); siehe

den Code bello

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

Sie brauchen nicht textarea#message

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

Sie direkt

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

in Javascript verwenden können, verwenden:

document.getElementById("message").value 
0

Sie können auch Wert durch seinen Namen bekommen statt id wie folgt aus:

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

Sie brauchen nicht .html() zu verwenden. Sie sollten mit .val() gehen.

Vom doc von .val():

.val() Die Methode in erster Linie zu erhalten, die Werte von Formelementen wie input, select und textarea verwendet wird. Wenn eine leere Sammlung aufgerufen wird, wird undefined zurückgegeben.

var message = $('#message').val(); 
Verwandte Themen