<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?
In a POST response, a
textarea
will respond with the contents ofinnerHTML
. However, if you have set a value attribute to thetextarea
and you try gettingtextarea.value
in JavaScript, you will receive the contents of thevalue
attribute.A browser should never display the
value
attribute of atextarea
in the physicaltextarea
because it isn't standard. Thetextarea
tag operates differently from theinput
tags. I would assume it does that because theinput
tag doesn't support line breaks.The value a user changes would be the
innerHTML
value (html
in jQuery), not thevalue
attribute like they do withinput
fields.The value of a textarea is it's contents. The 'value' property does not have a standard meaning for this tag, so a form or JavaScript will get 'hi' from the textarea. Here's a demonstration of this in JavaScript.
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.
hi
will be submitted. There is novalue
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 itsvalue
property. Although DOM property names often map 1:1 to HTML attribute names, they don't always and this is just one example.