建立文本区
以前我们讨论的窗体元素中,用户不能输入超过一行的文本,<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规范中没有定义文本区内的文字怎样换行,当你在Inte.net Explorer中在文本区中输入一行文字到达右边界时,文本就会自动换到下一行;而使用Netscape Navigator时,文字会向右滚动。
如果你想在Netscape Navigator中控制文本区内的文字怎样换到新的一行,就要使用Netscape特有的属性WRAP。这个属性可接受三个值:OFF、PHYSICAL和VIRTUAL,缺省值是OFF,即文本不会换到新的一行。另一方面,当WRAP=PHYSICAL时,文本会自动换到下一行。当文本区的内容被提交时,回车键会被添加到文本换行的地方。如果你想让文本区的文字自动换行,但又不想在提交内容时加入附加的回车键,就可以使用WRAP=VIRTUAL。
当我建立文本区时,我几乎总是使用WRAP=VIRTUAL属性。当文本区内的文字不自动换行,将会造成用户输入信息的混乱,通过使用这个属性,我可以确保不管在Microsoft还是Netscape的浏览器上文本区的文字都会自动换行,而且我也不想在解释文本区的内容时处理多余的回车键,因此使用WRAP=VIRTUAL可做到这一点。