HTML 表单
FORM(表单)标签
表单的标签在HTML文档中指定了一个表单。在一个文档中可以有多个表单,但是一点必须注意表单不能嵌套。
<FORM ACTION="url"> ... </FORM>
具体属性如下:
ACTION是将要提交的表单中查询服务器的URL,如果这个属性是空的,那么当前的文档URL将被使用。
METHOD是HTTP/1.0方法,它使用与提交表单给查询数据库。你使用哪个方法取决于你特定的服务器是怎么工作的。这里强烈推荐使用POST。当然你也可以使用GET。POST和GET具体描述如下:
GET—这是一个缺省的方法,它将表单内容附加给URL,就好象它们是普通查询。
POST --– 这个方法是将表单内容作为一个数据体而不是URL的一部分传送给服务器的。
ENCTYPE 为表单内容指定编码。这个属性只有在METHOD被设置为POST的时候才应用,并且只有一种可能数值(缺省值为application/x-www-form-urlencoded)。
在表单中,你除了不能表单外,你可以使用INPUT(输入)、SELECT(选择框)以及TEXTAREA(文本域)。
因为表单不会自动从文档的其余部分中区分开来。我们推荐在一个表单之前使用HR(horizontal rule,水平线)标签来区分。
INPUT(输入)标签
输入标签用于在表单中指定一个简单的输入元素。它是一个独立的标签,它旁边没有其它内容并且没有终止标签,它跟IMG的用法是一样的。
输入标签具体的属性为:
TYPE(类型)必须为以下的一种:
"text"(文本),这个是缺省的。
"password"(密码),看不到键入的字符,只有星号。
"checkbox" (复选框),是一个单一的切换按钮,有开和关两种状态。
"radio" (无线电按钮),单一的切换按钮,有开和关两种状态,可以组成一个组,用于多选一的操作。
"submit" (提交),它是一个按钮,将当前的表单包装到查询URL中并且将它发送到远程的服务器中。
"reset" (复位),也是一个按钮,它可以使表单中的各种输入复位到它的缺省数值。
NAME 是为输入区域的一个符号名字(不是显示的名字---表单中HTML通常使用的)。
VALUE是文本或者密码区域,它可以用于指定缺省区域内容。对于一个复选框或者一个无线电按钮,VALUE指定当它被选择的时候按钮的值。复选框或者无线电按钮的缺省值为”on”。对于"submit" (提交)and "reset"(重置),VALUE可以为按钮用于指定标志。
CHECKED (不需要数值)指定复选框或者无线电按钮被选中。它只适用于复选框或者无线电按钮。
SIZE 使指定输入区域字符串的大小,它只对文本区域和密码输入区域有效。如果这个没给出,缺省的设置为20。多行的文本输入区域可以指定为SIZE= width,height; 比如 SIZE=60,12。这里注意:SIZE属性不应该要来指定多行文本输入区域因为TEXTAREA标签是有效的。
MAXLENGTH 是可以接受的字符串的最大数目,它只适用于文本区域和密码区域。如果它没有设置则缺省的值是无穷大。如果MAXLENGTH大于SIZE则文本区域就可以滚动。
SELECT(选择框)标签
在<FORM> ... </FORM>里面有多少个SELECT标签都是允许的,它可以混合其它HTML元素(包括INPUT和TEXTAREA元素)和文本,但是不能包括FORMS。
. 不象INPUT,SELECT有和关闭标签。在SELECT里面,只有一系列的OPTION标签,每一个OPTION标签之后跟着一些文本,比如 :
<SELECT NAME="a-menu">
<OPTION> First option.
<OPTION> Second option.
</SELECT>
SELECT的属性有:
NAME是为这个SELECT元素起的名字。它不能为空,必须给出具体值。
SIZE:如果SIZE是1或者如果SIZE的属性没有,SELECT缺省为一个Motif option 菜单。如果SIZE为2或者更大,SELECT将作为一个Motif出现滚动的列表。这个SIZE的数值决定了列表中有几项。
MULTIPLE:如果出现(它没有数值),它指定选择框可以进行多行选择。
OPTION的属性如下:
SELECTED 指定缺省状态这个OPTION被选择。如果SELECT允许多行选择,多个OPTION可以指定为SELECTED。
TEXTAREA(文本域)标签
TEXTAREA标签被用来放置一个多行的文本输入区域。它有以下的属性:
NAME是文本域的名字。
ROWS 是文本域的行数。
COLS 是文本域的列数(即字符的水平宽度)。
TEXTAREA 域自动有滚动条。不论多少的文本都可以件入到里面。
TEXTAREA元素需要一个打开和关闭的标签即<TEXTAREA>和</TEXTAREA> 。没有缺省内容的TEXTREA如下所示:
<TEXTAREA NAME="foo" ROWS=4 COLS=40>
有缺省内容的TEXTREA如下所示:
<TEXTAREA NAME="foo" ROWS=4 COLS=40>
Default contents go here.
</TEXTAREA>
缺省内容必须是ASCII文本。
表单的提交
下面先讲讲Method = GET:
当提交按钮被按下,表单的内容将被汇编到查询URL中,如下所示:
action?name=value&name=value&name=value
"action"由FORM标签设置的ACTION指定的URL,或者如果没有ACTION属性没有被指定的时候,是当前的文档URL。
在"name" 或者 "value"任何实例中奇怪的字符都将被视为正常的字符,当然包括"=" 和 "&"等等。这里注意,"="是分离名字和数值,而"&"示分离名字/数值对的。
对于文本和密码域,不管用户键入什么都将视为数值。如果用户没有键入任何的内容,这个数值将是空,但是"name="还是会出现。对于复选框和无线电按钮,VALUE属性指定了复选框或者无线电按钮被选中的时候的值。一个未选中的复选框会在汇编查询字符串的时候被忽视。多个复选框可以有相同的名字(和不同的数值)。多个无线电按钮是用于多选一的情况,它可以有相同的名字但是不同的数值。
再来谈谈Method = POST吧:
表单的内容跟上面讲述的GET方法的编码是一样的,但是不是将它们附加到URL由于表单ACTION属性指定为查询,而是这些内容将作为POST操作的一部分以数据块发送的。这个ACTION属性是数据块要POST的URL。
测试服务器
如果你想编写原型的表单并对它在查询服务器上进行测试,你可以编写如下代码:
对于 METHOD="POST", 使用 ACTION="http://hoohoo.ncsa.uiuc.edu/cgi-bin/post-query"
对于 METHOD="GET", 使用 ACTION="http://hoohoo.ncsa.uiuc.edu/cgi-bin/query"