﹤form.../﹥元素可以指定id、style、class等核心属性,还可以指定onclick等事件属性。除此之外还可以指定如下几个属性
action:指定当单击表单内的“确认”按钮时,该表单被提交到哪个地址。该属性既可指定一个绝对地址,也可指定一个相对地址。该属性必填。
method:指定提交表单时发送何种类型的请求,该属性值可为get 或 post,分别用于发送 GET 或 POST 请求。通常建议发送 POST 请求。该属性必填。
enctype:指定对表单内容进行编码所使用的字符集。
name:指定表单的唯一名称,建议该属性值与 id 属性值保持一致。
target:指定使用哪种方式打开目标 URL(提交请求会打开另一个 URL 资源),与超链接的 target 可接受的属性值完全一样,该属性值可以是_blank、_parent._self和 top 四个值中之一。
﹤form.../﹥元素的 method 属性非常重要,它指定了该表单提交请求的方式,表单默认以GET 方式提交请求。GET 请求和 POST 请求区别如下。
GET 方式的请求:直接在浏览器地址栏中输入访问地址所发送的请求,或提交表单发送请求时,该表单对应的﹤form.../﹥元素没有设置method 属性,或设置 method属性为 get,这几种请求都是 GET 方式的请求。GET 方式的请求会将请求参数的名和值转换成字符串,并附加在原 URL 之后,因此可以在地址栏中看到请求参数
名和值。且 GET 请求传送的数据量较小,一般不能大于 2KB。
POST 方式的请求:这种方式通常使用提交表单的方式来发送,且需要设置﹤form.../﹥元素的method 属性为 post。 POST 方式传送的数据量较大,通常认为POST 请求参数的大小不受限制,但往往取决于服务器的限制,POST 请求传输的数据量总比 GET 传输的数据量大。而且 POST 方式发送的请求参数以及对应的值放在HTML HEADER中传输,用户不能在地址栏里看到请求参数,安全性相对较高。
表单的enctype 属性用于指定表单数据的编码方式,该属性有如下三个值。
application/x-www-form-urlencoded:这是默认的编码方式,它只处理表单控件里的value 属性值,采用这种编码方式的表单会将表单控件的值处理成 URL编码方式。
multipart/form-data:这种编码方式会以二进制流的方式来处理表单数据,这种编码方式会把文件域指定文件的内容也封装到请求参数里。当需要通过表单上传文件时使用该屆性值
text/plain:当表单的 action 属性值为 mailto:URL 的形式时使用这种编码方式比较方便,这种编码方式主要适用于直接通过表单发送邮件的方式。
单纯的﹤form.../﹥元素既不能生成可视化内容,也不包含任何表单控件,甚至不能提交表单,因此﹤form.../﹥元素必须与其他表单控件元素结合使用。
当在﹤form.../﹥元素里定义一个或多个表单控件时,一旦提交该表单,该表单里的表单控
件将会转换成请求参数。关于表单控件转换成请求参数的规则如下:
每个有 name 属性的表单控件对应一个请求参数,没有name 属性的表单控件不会生成请求參数。
如果多个表单控件有相同的 name 属性,则多个表单控件只生成一个请求参数,只是该参数有多个值。
表单控件的 name 属性指定请求参数名,value 属性指定请求参数值。
如果某个表单控件设置了 disabled 或 disabled="disabled”属性,则该表单控件不再生成请求參数。
大部分表单控件,包括﹤input.../﹥元素所生成的绝大部分表单控件(除了指定 type="hidden的隐藏域之外),如﹤button.../﹥生成的按钮、﹤select.../﹥ 生成的列表框和下拉菜单、﹤textarea.../﹥生成的多行文本域,它们都可以人我得鼠标焦点,响应鼠标事件,因此它们都可指定 onfocus.noblur属性,分别用于设置得到焦点、失去焦点的事件响应。而且这些表单控件都可指定一个tablndex 属性,假设A控件的tablndex为1,B控件的tablndex为2:C控件的 tablndex为3,在A控件拥有输入焦点的精况下,拉Tab键将导致输人焦点转移到B控件上,再次按TAB键将导致输入焦点转移到C控件上:通过设置tablndex 属性,让用户无须使用鼠标,就可以让输入焦点在各表单控件上转程。