建立文本区

以前我们讨论的窗体元素中，用户不能输入超过一行的文本，<TEXTAREA>标识符可以建立一个文本区，在这里你可提供给用户更大的空间来自由地输入文本（见图6.10）。当你想让用户输入一段文字的时候就使用这个标识符。看下面的例子：

<HTML>

<HEAD>

<TITLE> Text Area </TITLE>

</HEAD>

<BODY >

<FORM ACTION＝“somedirectory/mypage.asp” METHOD=“POST”>

<BR> Please enter your comments below:

<BR> <TEXTAREA NAME=“comments” COLS=40 ROWS=10></TEXTAREA>

</FORM>

</BODY>

</HTML>

图6.10 文本区

你应当立即注意到，在此例中，没有使用<INPUT>标识符来建立文本区，你使用<TEXTAREA>标识符来建立文本区，这个标识符与其它窗体元素一样，必须在<FORM>标识符中出现。

注意

一些浏览器允许你使用下面的语句：

<INPUT TYPE=TextArea COLS=40 ROWS=10>

不要这样做，在<INPUT>标识符的属性中建立文本区是没什么好处的。如果你想让你的网页与浏览器有最大程度的兼容性，就使用<TEXTAREA>标识符，不要用TextArea属性。

使用COLS和ROWS属性你可以指定文本区的宽度和高度，COLS属性以列来指定文本区的宽度，ROWS属性以行来指定文本区的高度。注意这两个属性都是以字符平均宽度来度量的，因为文本区不使用固定字体，因此你在一个50列的文本区内不能刚好输入50个字符。

你不能给COLS和ROWS属性指定百分数值，这是很不方便的，因为这使得网页在具有不同分辨率的显示器上看起来不一样，这也是HTML的一个不足。

而且，文本区没有MAXLENGTH属性。没有办法阻止某些用户在文本区内输入大量的文字，对此你一点办法也没有。

注意，<TEXTAREA>标识符是一个容器标识符，如果你想在第一次读入网页时，在文本区显示出文字，那就要将文字包含在<TEXTAREA>标识符内。如下所示：

<HTML>

<HEAD>

<TITLE> Text Area </TITLE>

</HEAD>

<BODY >

<FORM ACTION＝“somedirectory/mypage.asp” METHOD=“POST”>

<BR> Please enter your comments below:

<BR> <TEXTAREA NAME=“comments” COLS=40 ROWS=10>

I am the default text!

</TEXTAREA>

</FORM>

</BODY>

</HTML>

当这个HTML文件被网络浏览器解释时，文字I am the default text!将在文本区内显示。注意你只能在文本区内输入文字（包括第五章中讨论的特殊字符――见“加入特殊字符”一节）。任何在<TEXTAREA>中出现的HTML标识符都将被忽略。

HTML规范中没有定义文本区内的文字怎样换行，当你在Internet Explorer中在文本区中输入一行文字到达右边界时，文本就会自动换到下一行；而使用Netscape Navigator时，文字会向右滚动。

如果你想在Netscape Navigator中控制文本区内的文字怎样换到新的一行，就要使用Netscape特有的属性WRAP。这个属性可接受三个值：OFF、PHYSICAL和VIRTUAL，缺省值是OFF，即文本不会换到新的一行。另一方面，当WRAP＝PHYSICAL时，文本会自动换到下一行。当文本区的内容被提交时，回车键会被添加到文本换行的地方。如果你想让文本区的文字自动换行，但又不想在提交内容时加入附加的回车键，就可以使用WRAP＝VIRTUAL。

当我建立文本区时，我几乎总是使用WRAP＝VIRTUAL属性。当文本区内的文字不自动换行，将会造成用户输入信息的混乱，通过使用这个属性，我可以确保不管在Microsoft还是Netscape的浏览器上文本区的文字都会自动换行，而且我也不想在解释文本区的内容时处理多余的回车键，因此使用WRAP＝VIRTUAL可做到这一点。