侧边栏壁纸
  • 累计撰写 218 篇文章
  • 累计创建 59 个标签
  • 累计收到 5 条评论
Web

form 元素的属性

barwe
2022-04-25 / 0 评论 / 0 点赞 / 1,215 阅读 / 2,676 字
温馨提示:
本文最后更新于 2023-06-07,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

表单用来收集用户的输入,它本身对用户是隐藏的,用户感受不到表单这个概念的存在。

表单会收集它的所有与输入相关的子元素的值,构建一个数据对象,然后发送到指定服务器。

表单的收集和提交是浏览器提供的默认行为,我们也可以手动收集、验证和提交,此时可能需要禁用浏览器的默认行为。

表单中的主要输入元素就是 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>
0

评论区