Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Which value will be sent by <textarea> and why?

<form>
<textarea name="test" value="no">
hi
</textarea>
<input type="submit" />
</form>

hi or no,and reason?

I ask this question because I see javascript editors use textarea.value = html; to restore the content when submit,why they do this if value attribute is useless?

like image 518
user198729 Avatar asked Dec 11 '09 04:12

user198729


3 Answers

hi will be submitted. There is no value attribute for the <textarea> tag. See W3School's textarea tag reference for details.

To answer your question of why you see javascript libraries accessing the value property of a textarea DOM element, you have to appreciate that HTML and the DOM (Document Object Model) that javascript accesses are 2 different animals. In HTML the value of a <textarea> is its contents. In DOM, the value of a textarea node is contained in its value property. Although DOM property names often map 1:1 to HTML attribute names, they don't always and this is just one example.

like image 78
Asaph Avatar answered Oct 18 '22 02:10

Asaph


In a POST response, a textarea will respond with the contents of innerHTML. However, if you have set a value attribute to the textarea and you try getting textarea.value in JavaScript, you will receive the contents of the value attribute.

A browser should never display the value attribute of a textarea in the physical textarea because it isn't standard. The textarea tag operates differently from the input tags. I would assume it does that because the input tag doesn't support line breaks.

The value a user changes would be the innerHTML value (html in jQuery), not the value attribute like they do with input fields.

like image 28
Jeff Rupert Avatar answered Oct 18 '22 04:10

Jeff Rupert


A couple other points -

All browsers that support javascript return read/write values for textarea.value, consistent with the input elements. But you can't use getAttribute('value') or setAttribute('value') with a textarea.

You can also read a textarea's 'type' property,though type is not an attribute either.

If you set the value property, textarea.value=string;**it is equivilent to **textarea.appendChild(document.createTextNode(string))-

A textarea can not contain any other elements, only text nodes.

The text in the textarea set from value will be the literal characters from the string, while setting the innerHTML property will escape any entities and minimize white-space.

like image 30
kennebec Avatar answered Oct 18 '22 04:10

kennebec