HTML中,表单是由<form>元素表示,在JavaScript中,表单则对应HTMLElement类型。
表单不仅具有其他HTML元素默认属性,还有自己独有属性。
- acceptCharset:服务器能够处理的字符集;等价于 HTML中的 accept-charset 特性。
- action:接受请求的 URL;等价于 HTML中的 action 特性。
- elements:表单中所有控件的集合(HTMLCollection)
- enctype:请求的编码类型;等价于 HTML中的 enctype 特性。
- length:表单中控件的数量。
- method:要发送的 HTTP请求类型,通常是”get”或”post”;等价于 HTML的 method 特性。
- name:表单的名称;等价于 HTML的 name 特性。
- reset():将所有表单域重置为默认值。
- submit():提交表单。
- target:用于发送请求和接收响应的窗口名称;等价于 HTML的 target 特性。
两种取得<form>元素引用的方法:
- document.getElementById()
- documen.forms,取得页面中所有表单集合。
1. 提交表单
提交按钮,将<input>或<button>的type特性的值设为“submit”。请求发送给服务器之前触发 submit 事件。
| 1 | <!-- 通用提交按钮 --> | 
图像按钮,将<input>的type特性的值设为“image”。请求发送给服务器之前触发 submit 事件。
| 1 | <!-- 图像按钮 --> | 
JS提交,以编程方式调用submit()方法也可以提交表单,不触发submit()事件。
| 1 | var form = document.getElementById("myForm"); | 
阻止表单提交的方法,阻止事件的默认行为。
| 1 | var form = document.getElementById("myForm"); | 
2. 重置表单
使用 type 特性值为”reset”的<input>或<button>都可以创建重置按钮。用户单击重置按钮重置表单时,会触发 reset 事件。
| 1 | <!-- 通用重置按钮 --> | 
也可以通过 JavaScript 来重置表单,调用 reset()方法会像单击重置按钮一样触发 reset 事件。
| 1 | var form = document.getElementById("myForm"); | 
3. 表单字段
每个表单都有elements属性,该属性是表单中所有表单元素(字段)的集合。可以按照位置和 name 特性来访问它们。
3.1 共有的表单字段属性
除了<fieldset>元素之外,所有表单字段都拥有相同的一组属性。表单字段共有的属性如下:
- disabled:布尔值,表示当前字段是否被禁用。
- form:指向当前字段所属表单的指针;只读。
- name:当前字段的名称。
- readOnly:布尔值,表示当前字段是否只读。
- tabIndex:表示当前字段的切换(tab)序号。
- type:当前字段的类型,如”checkbox”、 “radio”,等等。
- value:当前字段将被提交给服务器的值。对文件字段来说,这个属性是只读的,包含着文件
 在计算机中的路径。
第一次单击后就禁用提交按钮方法:只要侦听 submit 事件,并在该事件发生时禁用提交按钮即可。
| 1 | //避免多次提交表单 | 
除<input><filedset>外,其他表单字段的type属性值:
3.2 共有的表单字段方法
每个表单字段都有两个方法:focus() 和 blur()。
- focus()方法用于将浏览器的焦点设置
 到表单字段,即激活表单字段,使其可以响应键盘事件。- HTML5为表单字段新增了一个 autofocus 属性,只要设置这个属性,
 不用 JavaScript就能自动把焦点移动到相应字段。
 
- HTML5为表单字段新增了一个 autofocus 属性,只要设置这个属性,
- blur()方法,它的作用是从元素中移走焦点。
3.3 共有的表单字段事件
除了支持鼠标、键盘、更改和HTML事件之外,所有表单字段都支持下列 3个事件:
- blur:当前字段失去焦点时触发。
- change:对于- <input>和- <textarea>元素,在它们失去焦点且 value 值改变时触发;对于- <select>元素,在其选项改变时触发。
- focus:当前字段获得焦点时触发。
功能描述: 假设有一个文本框,我们只允许用户输入数值。此时,可以利用focus 事件修改文本框的背景颜色,以便更清楚地表明这个字段获得了焦点。可以利用blur事件恢复文本框的背景颜色,利用change事件在用户输入了非数值字符时再次修改背景颜色。
| 1 | var textbox = document.forms[0].elements[0]; | 
