Posted: 2004/11月/16 1:03下午 | IP記錄
|
|
|
建立文本區
以前我們討論的窗體元素中,用戶不能輸入超過一行的文本,<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=PHYSICA L時,文本會自動換到下一行。當文本區的內容被提交時,回車鍵會被添加到文本換行的地方。如果你想讓文本區的文字自動換行,但又 不想在提交內容時加入附加的回車鍵,就可以使用WRAP=VIRTUAL。
當我建立文本區時,我幾乎總是使用WRAP=VIRTUAL屬性。當文本區內的文字不自動換行,將會造成用戶輸入信息的混亂,通 過使用這個屬性,我可以確保不管在Microsoft還是Netscape的瀏覽器上文本區的文字都會自動換行,而且我也不想在 解釋文本區的內容時處理多餘的回車鍵,因此使用WRAP=VIRTUAL可做到這一點。
|