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?

Antworten:


156

Der Wert des Textbereichs wird auch mit der valMethode ermittelt:

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




5

Sie müssen nicht verwenden textarea#message

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

Sie können direkt verwenden

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

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.


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



2

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

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

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();


-1

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

var message = $('textarea:input[name=message]').val();
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.