Wie erhalte ich den Wert eines Textbereichs in jquery?

81

Ich habe dieses Formular und ich versuche, den Wert aus dem Textbereich zu erhalten. aus irgendeinem Grund will es nicht.

<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?

Patriotische Kuh
quelle

Antworten:

156

Der Wert des Textbereichs wird auch mit der valMethode ermittelt:

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

Sie müssen .val()für den Textbereich verwenden, da es sich um ein Element und nicht um einen Wrapper handelt. Versuchen

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

Geige aktualisiert

Selvakumar Arumugam
quelle
17

Sie sollten val()anstelle von verwendenhtml()

var message = $('#message').val();
nicht definiert
quelle
10

in Javascript:

document.getElementById("message").value
Saurabh Chandra Patel
quelle
Aus Mozillas Dokumentation : " <textarea>Unterstützt das valueAttribut nicht."
Cristian Ciupitu
5

Sie müssen nicht verwenden textarea#message

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

Sie können direkt verwenden

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

Sie sollten überprüfen, ob der Textbereich null ist, bevor Sie val () verwenden. Andernfalls wird ein undefinierter Fehler angezeigt.

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

Dann können Sie mit der Nachricht alles machen.

Wuji
quelle
Das ist falsch. jQuery gibt für keine Abfrage undefiniert zurück. Stattdessen wird ein leerer Satz zurückgegeben. Der Aufruf von val für eine leere Menge gibt jedoch eine undefinierte zurück, aber Ihre Antwort löst dieses Problem nicht.
Xiyng
2

$('textarea#message')kann nicht undefiniert sein (wenn $Sie damit jQuery meinen).

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

Zbyszek Swirski
quelle
2

Sie können den Wert auch über das Namensattribut des Elements abrufen .

var message = $("#formId textarea[name=message]").val();
rahim.nagori
quelle
1

Sie müssen nicht verwenden .html(). Du solltest mitgehen .val().

Aus dem Dokument von .val():

Das .val()Verfahren dient vor allem die Werte der Formelemente zu erhalten , wie beispielsweise input, selectund textarea. Wenn eine leere Sammlung aufgerufen wird, wird sie zurückgegeben undefined.

var message = $('#message').val();
Jawwad Ali Khan
quelle
1

Alle Werte werden immer mit genommen .val().

siehe den folgenden Code:

var message = $('#message').val();
محمد المسلم
quelle
-1

Sie können den Wert auch anhand des Namens anstelle der folgenden ID abrufen:

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