4 Answers
4

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.

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.