然一直没怎么用过html控件textarea但是根据自己一贯的作风楼猪大胆认为textarea和服务器控件TextBox的TextMode为MultiLine的文本框在最终生成的html标签上应该是一样的也许是先入为主吧在上周的一个设计页面中楼猪毫不思索地写下了下面的html代码
<textarea id=txtTest value= cols= rows=></textarea>
然后vs有一个提示消息 验证 (XHTML Transitional): 属性value不是元素textarea的有效属性
晕textare难道竟然没有value属性?然后楼猪又尝试将textarea放在服务端
<textarea id=txtTest cols= rows= enableviewstate=false runat=server></textarea>
然后在cs文件下可以写如下代码
thistxtTestValue = ;
这说明服务端的Value属性是存在的楼猪又查了一下Value属性元数据说明获取或设置在 SystemWebUIHtmlControlsHtmlTextArea 控件中输入的文本再查看一下生成的html源码
<textarea name=txtTest id=txtTest cols= rows=></textarea>
现在一目了然原来textarea的value值在textarea开始和结束标签内而不是像type为text的input看起来是将value放在value属性上然后楼猪又用服务器控件TextBox和runat为server的textarea又进行了一下对比
代码
<asp:TextBox ID=txtTest TextMode=MultiLine EnableViewState=false runat=server></asp:TextBox>
<textarea id=txtTest cols= rows= enableviewstate=false runat=server></textarea>
cs下写下如下代码
thistxtTestText = ;
thistxtTestValue = ;
它们生成的html也是一样的
<textarea name=txtTest rows= cols= id=txtTest></textarea>
<textarea name=txtTest id=txtTest cols= rows=></textarea>
而对于TextBox而言它又是可以直接在标签上写Text属性的而runat=server的textarea却不可以直接在标签内写Value属性
<asp:TextBox ID=txtTest TextMode=MultiLine Text= EnableViewState=false runat=server></asp:TextBox>
然后楼猪又通过javascript来获取它们的value
var txtValue=documentgetElementById(txtTest)value;
alert(txtValue);
var txtValue=documentgetElementById(txtTest)value;
alert(txtValue);
kao这一次它们又都弹出了值!这就说明textarea是有value属性的(换成innerText属性也一样)真的彻底服了最后楼猪为了保险起见将textarea换成了自己一直使用习惯的没有视图状态的TextBox因为现在不熟悉也吃不透这个textarea还有哪些古怪的设计期待指点