jak uzyskać wartość textarea w jQuery?


82

Mam ten formularz i próbuję uzyskać wartość z obszaru tekstowego. z jakiegoś powodu nie chce.

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

lub jsfiddle

jakieś pomysły?

Odpowiedzi:


158

Wartość textarea jest również pobierana valmetodą:

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




5

Nie musisz używać textarea#message

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

Możesz bezpośrednio użyć

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

2

Powinieneś sprawdzić, czy textarea ma wartość null, zanim użyjesz val (), w przeciwnym razie otrzymasz niezdefiniowany błąd.

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

Wtedy możesz zrobić wszystko z wiadomością.


To jest niepoprawne. jQuery nigdy nie zwraca wartości undefined dla żadnego zapytania. Zamiast tego zwraca pusty zestaw. Jednak wywołanie val na pustym zestawie zwraca undefined, ale twoja odpowiedź nie rozwiązuje tego problemu.
Xiyng

2

$('textarea#message')nie może być niezdefiniowane (jeśli $masz na myśli oczywiście jQuery).

$('textarea#message')może mieć długość 0 i wtedy $('textarea#message').val()byłoby puste i to wszystko



2

Wartość można również uzyskać na podstawie atrybutu nazwy elementu .

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

1

Nie musisz używać .html(). Powinnaś iść .val().

Z dokumentu .val():

.val()Metoda służy przede wszystkim do uzyskania wartości elementów formularza, takich jak input, selecti textarea. Po wywołaniu na pustej kolekcji zwraca undefined.

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


-1

Możesz również uzyskać wartość według nazwy zamiast identyfikatora w ten sposób:

var message = $('textarea:input[name=message]').val();
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.