<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?
<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?
4 Answers
Reset to default 18hi
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.
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.
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.
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.
<form>
<textarea name="test" value="no" id='ff'>
hi
</textarea>
<input type="submit" />
</form>
<br>
<a onclick='showVal("ff")'>Show Value</a>
<script>
function showVal(id){
var snib=document.getElementById(id);
alert(snib.value);
}
</script>