资讯专栏INFORMATION COLUMN

JavaScript 表单脚本

PrototypeZ / 1262人阅读

摘要:文本框获得焦点时,选中其中所有的文本思路利用焦点事件事件,在文本框获得焦点时,利用其方法选中所有文本。自动切换焦点思路利用事件检测用户输入新字符后,文本框内的字符串是否已经达到最大长度,若达到最大长度,则将焦点切换至下一个文本框。

JavaScript 表单脚本

通过 document.forms 可以获得一个包含当前页面中所有表单的集合

HTMLFormElement 接口

下面是这个接口常用的属性和方法:

action:接受请求的 URL,等价于 HTML 中的 action 特性。

elements:返回表单中所有控件(或表单字段)的集合(HTMLFormControlsCollection)。需要注意的是,其中不包括 type 等于 image 的 input 元素

enctype:请求的编码类型,HTML 提供了3种编码类型

application/x-www-form-urlencoded:默认的编码类型

multipart/form-data:在上传文件时使用(

text/plain:在 HTML5 中引进,但是不建议使用

【参考】:What does enctype="multipart/form-data" mean?

length:表单中控件的数量

method:要发送的 HTTP 请求类型(get 或 post),等价于 HTML 中的 method 特性

name:表单的名称,等价于 HTML 中的 name 特性

noValidate:是否验证表单,若它的值为 true,则表示禁止验证表单

reset():将该表单下的所有表单域重置为默认值

submit():提交表单

重置或提交表单

在 HTML 中,重置表单的方式有以下 2 种:





用户点击重置按钮重置表单时,会在重置表单之前触发 reset 事件。利用这个事件,我们可以取消不必要的重置操作。

当然,也可以通过 JavaScript 调用 reset() 方法来重置表单,这个方法也会像单击重置按钮一样触发 reset 事件

var form1 = document.getElementById("form1");
form1.reset();

在 HTML 中,提交表单的方式有以下 3 种:








以上面这 3 种方式提交表单时,浏览器会在将请求发送给服务器之前触发 submit 事件,这样,我们就可以利用这个事件对表单进行验证,并据以决定是否提交表单。

注意:submit 事件只能在 form 元素上触发,不能在提交按钮上触发!

Note that submit is fired only on the form element, not the button or submit input.

我们也可以通过 JavaScript 的 submit() 方法来提交表单,但是不会触发 submit 事件。因此注意在使用此方法之前先验证表单。

var form1 = document.getElementById("form1");
form1.submit();

See the Pen submit or reset event for form by percy (@percy507) on CodePen.


防止重复提交表单

在有提交按钮的表单中,我们防止表单重复提交的方法有 2 种:1. 利用 submit 事件来禁用表单提交按钮2. 利用 onsubmit 事件处理程序取消后续的表单提交操作

表单控件共有的属性和方法

除了

元素之外,所有表单控件都拥有相同的一组属性:

disabled:布尔值,表示当前控件是否被禁用

form:只读,指向当前控件所属的表单

name:当前控件的名称

readOnly:布尔值,表示当前控件的值是否只读,若为 true,则控件的 value 是不能被修改的

type:当前控件的类型

value:当前控件将被提交给服务器的值

共有的方法:focus()blur()

HTML5 中新添加了一个 autofocus 属性。设置这个属性的表单控件会自动获取焦点。

HTMLInputElement 接口

通用属性

formAction:重写 form 元素的 action 属性

formEncType:重写 form 元素的 enctype 属性

formMethod:重写 form 元素的 method 属性

labels: A list of

type="text"

maxLength:设置文本框可接受的最大字符数

size:设置文本框中可以显示的字符数

value:设置文本框的初始值

placeholder:设置文本框的提示内容

type="radio" 或 type="checkbox"

checked:检测 type 为 radio 或 checkbox 的表单控件是否被选中

除了 type="text" 的文本框,还有一种文本框