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?

Patriotycznycow
źródło

Odpowiedzi:

158

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

var message = $('textarea#message').val();
Wizja
źródło
23

Musisz użyć .val()dla textarea, ponieważ jest to element, a nie opakowanie. Próbować

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

Zaktualizowane skrzypce

Selvakumar Arumugam
źródło
18

powinieneś używać val()zamiasthtml()

var message = $('#message').val();
nieokreślony
źródło
10

w javascript:

document.getElementById("message").value
Saurabh Chandra Patel
źródło
Z dokumentacji Mozilli : „ <textarea>nie obsługuje valueatrybutu”.
Cristian Ciupitu
5

Nie musisz używać textarea#message

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

Możesz bezpośrednio użyć

var message = $('#message').val();
SidTechs1
źródło
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ą.

Wuji
źródło
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

Zbyszek Swirski
źródło
2

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

var message = $("#formId textarea[name=message]").val();
rahim.nagori
źródło
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();
Jawwad Ali Khan
źródło
1

wszystkie wartości są zawsze brane z .val() .

zobacz kod poniżej:

var message = $('#message').val();
محمد المسلم
źródło
-1

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

var message = $('textarea:input[name=message]').val();
Ajay
źródło