表单用来收集用户的输入,它本身对用户是隐藏的,用户感受不到表单这个概念的存在。
表单会收集它的所有与输入相关的子元素的值,构建一个数据对象,然后发送到指定服务器。
表单的收集和提交是浏览器提供的默认行为,我们也可以手动收集、验证和提交,此时可能需要禁用浏览器的默认行为。
表单中的主要输入元素就是 input 元素,它按照不同的 type 值表现出不同的样式和实现不同的功能。
form 元素有几个属性来规定怎么验证和提交表单。
我们一般说的 表单元素 指的并不是 form 元素,而是 form 元素中负责用户输入的具体输入组件,例如 input 等。
action
点击提交按钮时,浏览器将表单数据发送到该属性指定的 URL。
在 HTML5 中action
属性可以省略,省略时默认发送到当前页面的路由。
action="#"
也表示将数据发送到当前页面的路由。
提交数据后,将会跳转至指定 URL 的页面,如果是发送到当前页面,则会刷新当前页面。
提交数据时,会按照action
属性和method
属性使用指定的方法向指定的 URL 发起请求。
<form action="http://xxxx" method="post"></form>
method
提交数据时默认使用的是 get 方法,GET 请求没有请求体,数据会被附加到查询参数中。
使用 GET 请求发送数据时因为会将表单数据附加到查询参数中,可能会与原本的同名查询参数冲突。
表单更推荐使用 post 方法。
<form action="http://xxxx" method="post"></form>
target
在何处打开action
属性指定的链接,默认在当前标签页打开。
"_self"
默认值,在当前窗口打开"_blank"
在新窗口打开- ……
autocomplete
是否启用自动完成。启用此功能后,浏览器会在用户输入时为部分输入元素提供输入建议,通过点击浏览器的建议值可快速完成输入。
这个属性是通过 form 元素输入元素提供默认值,它可以通过在具体的输入元素上设置autocomplete
进行覆盖。
<form action="http://xxxx" method="post" autocomplete="on"></form>
<form action="http://xxxx" method="post" autocomplete="off"></form>
name
给表单去一个名字,例如name="test"
,然后通过document.forms.test
可以拿到这个表单对象,调用其.submit()
可以手动触发提交。
<html>
<head>
<script type="text/javascript">
function submit2() {
document.forms.test.submit()
}
</script>
</head>
<body>
<form action="xxx" method="post" name="test">
<input type="button" onclick="submit2()" />
</form>
</body>
</html>
novalidate
HTML5 新增的属性,提交表单时不对表单项进行数据验证:
<form novalidate></form>
<form novalidate="novalidate"></form>
enctype
单词 encrypte 加密
发起 POST 请求时指定请求体数据的编码方式,默认为"application/x-www-form-urlencoded"
。
此时会对一些不安全字符进行安全编码。
可选值:
"application/x-www-form-urlencoded"
默认值"multipart/form-data"
不编码,表单包含文件时必须用这个"text/plain"
只编码空格,变成加号
accept-charset
服务器应该用哪种字符集处理表单数据,默认使用页面字符集。
可以手动指定一个或者多个字符集:
<form accept-charset="utf-8"></form>
<form accept-charset="utf-8,iso-8859-1"></form>
<form accept-charset="utf-8,iso-8859-1,gb2312"></form>
上面三个是最常用的字符集,分别代表 Unicode、拉丁字母和简体中文字符集。
rel *
指定链接类型,即两个文档之间的关系。rel
属性可以用在多个元素上,不仅是 form 元素。
目标页面(文档)相对于当前页面的关系,对于 form 元素rel
属性的可选值有:
"external"
外部链接,引用的文档不是当前站点的一部分"help"
目标文档是一个帮助文档"license"
目标文档是版权信息"next"
&"prev"
集合中的下一个/上一个文档"nofollow"
未经认可的文档,例如 Google 爬虫在设置这个值时不会跟踪引用的连接"noreferrer"
点击该链接时,请求中不会带有 Referer 头"opener"
功能未知"search"
文档的搜索工具
一般好像不用管这个属性。
<form rel="external"></form>
评论区