- 表单
- input 控件
- label标签
- textarea控件(文本域)
- select下拉菜单
- form表单域
- HTML5新表单属性
- autocomplete(自动完成)
- autofocus(获取焦点)
- form(表单关联)
- multiple(多选)
- placeholder(占位提示)
- 新的表单元素
- datalist
- keygen
- output
- input的新type属性介绍
- input表单验证
- w3cSchool 查阅位置
- email标签
- required属性
- pattern 自定义验证规则
- 自定义验证信息
- 小结
表单
在HTML中,一个完整的表单通常由表单控件(也称为表单元素)、提示信息和表单域3个部分构成。
表单控件: 包含了具体的表单功能项,如单行文本输入框、密码输入框、复选框、提交按钮、重置按钮等。
提示信息:一个表单中通常还需要包含一些说明性的文字,提示用户进行填写和操作。
表单域: 他相当于一个容器,用来容纳所有的表单控件和提示信息,可以通过他定义处理表单数据所用程序的url地址,以及数据提交到服务器的方法。如果不定义表单域,表单中的数据就无法传送到后台服务器。
input 控件
在上面的语法中,标签为单标签,type属性为其最基本的属性,其取值有多种,用于指定不同的控件类型。除了type属性之外,
标签还可以定义很多其他的属性,其常用属性如下表所示。
label标签
label 标签为 input 元素定义标注(标记)。
作用: 用于绑定一个表单元素, 当点击label标签的时候, 被绑定的表单元素就会获得输入焦点
如何绑定元素呢?
for 属性规定 label 与哪个表单元素绑定。
textarea控件(文本域)
如果需要输入大量的信息,就需要用到标签。通过textarea控件可以轻松地创建多行文本输入框,其基本语法格式如下:
select下拉菜单
使用select控件定义下拉菜单的基本语法格式如下
注意:
1.中至少应包含一对
。
2.在option 中定义selected =" selected "时,当前项即为默认选中项。
form表单域
在HTML中,form标签被用于定义表单域,即创建一个表单,以实现用户信息的收集和传递,form中的所有内容都会被提交给服务器。创建表单的基本语法格式如下:
常用属性:
1.Action 在表单收集到信息后,需要将信息传递给服务器进行处理,action属性用于指定接收并处理表单数据的服务器程序的url地址。
2.method 用于设置表单数据的提交方式,其取值为get或post。
3.name 用于指定表单的名称,以区分同一个页面中的多个表单。
注意: 每个表单都应该有自己表单域。
HTML5新表单属性
最完整的表单属性可以通过查阅w3cschool-h5表单属性获取,这里仅针对常见属性讲解
autocomplete(自动完成)
能够记录用户的输入,并且给予提示,这就是
autocomplete
的作用
-
取值:
- on:开启
- off:关闭
-
适用情况:
- 一般用在input标签中
示例代码:
Title
- 使用注意:
- 标签需要添加
name
属性 - 只有提交了一次以后才会出现提示
- 标签需要添加
autofocus(获取焦点)
当某一页有很多个可供输入的元素时,用户需要使用鼠标点选元素进行输入,为了提升用户体验,我们可以通过
autofocus
属性来指定页面中默认选中的元素
-
使用方法:
- 需要哪个
表单元素
获得焦点,只需要添加该属性即可 - 不需要赋值,只需要添加属性即可,见示例代码
- 需要哪个
示例代码:
Title
- 使用注意:
- 在没有该属性之前,能够使用
JavaScript
来指定元素 - 如果页面中多个元素设置了该属性,最后一个会获得焦点
- 在没有该属性之前,能够使用
form(表单关联)
当我们想要提交数据时,需要把
表单元素
放到对应的form
标签中,这个属性的出现让表单元素
的放置位置不在受到约束
-
使用方法:
- 想要某个
表单外
元素跟该表单
建立联系,只需要为元素添加属性form="表单id"
设置为想要建立联系的表单id
即可
- 想要某个
-
示例代码
- 让表单外输入爱好的
input
标签跟id为userForm
表单建立联系
- 让表单外输入爱好的
Title
爱好:
- 使用注意:
- 虽然这个属性可以让元素的放置位置不在成为限制,但是编码时依旧建议,将元素放置到对应的表单中,除了兼容性问题以外,也为了提升代码的可读以及可维护性
multiple(多选)
如果想要在某个
input
标签中选择多个值,可以使用该属性
-
适用情况:
- 该属性可以用在type为
file
标签内
- 该属性可以用在type为
-
示例代码
- 选择多文件时,需要按住
ctrl
按钮
- 选择多文件时,需要按住
placeholder(占位提示)
输入元素内默认显示一些提示信息,当用户输入之后自动消失,这种效果我们需要使用
JavaScript
来实现,知道出现了placeholder
这个属性
-
使用方式:
- 直接为该属性赋值想要提示的内容即可
-
适用情况:
- 想要不通过
JavaScript
来实现提示功能
- 想要不通过
-
示例代码:
- 显示效果如下
新的表单元素
除了在input标签中增加了一些新的
type
属性以外,H5
也推出了一些新的表单元素,由于浏览器的兼容问题,使用频率并不广,了解即可 w3cSchool_新表单元素
datalist
该元素规定了输入区域的选项列表,可以让用户有一些选项
-
测试代码:
- 注:测试代码只是
body
内部的代码
网址: 电话:
- 注:测试代码只是
-
datalist:
- id:id属性,想要使用该
datalist
的元素需要通过list=id
的方式来指定
- id:id属性,想要使用该
-
option:
- value:指定具体的值
- label:提示信息
-
注意:
- 如果input的type为
url
,option
中对应的value需要使用http://
开始
- 如果input的type为
keygen
keygen 元素是密钥对生成器(key-pair generator)。当提交表单时,会生成两个键,一个是私钥,一个公钥。
私钥(private key)存储于客户端,公钥(public key)则被发送到服务器。公钥可用于之后验证用户的客户端证书(client certificate),即实现非对称加密
目前,浏览器对此元素的糟糕的支持度不足以
使其成为一种有用的安全标准。
- 使用频率:
低
output
属于新的语义标签:用来放置输出的内容,但是不能自动的计算结果,依旧需要通过js的方式来动态修改结果,只是相比于其他的标签,
语义性更强
。
- 使用频率:
低
input的新type属性介绍
首先让我们来看一张表
其中标有红色5
的代表HTML5
中推出的
更详细内容请查阅网址:w3cSchool-h5-type
测试代码:
Title
运行效果
新type属性的注意要点
点击不同type的input标签会有不一样的弹出内容
如果发现w3cschool内容不全,建议去MDN搜索
并不是每一个新type属性,在PC端都有不同的显示
color, date, number 这些效果较为明显
-
兼容性问题
- 由于ie的兼容性的问题,在不同的浏览器中显示效果不尽相同
- 但是在移动设备上的支持效果较好,可以将该页面发送到手机进行测试
- 实际开发中可以按照需求选用
input表单验证
用户在输入内容的时候不可能做到全部正确,比如
email地址``电话长度
等等都有可能出现输入错误,试想一下,当用户辛辛苦苦的输入了10多个表单内容,点击提交由于输入错误,内容被清空了
w3cSchool 查阅位置
下面把api文档的查阅位置添加如下
- [w3cSchool_事件属性]w3School
- [w3cSchool_input标签]w3cSchool
email属性
在
H5
中的input
的新type
属性
- 示例代码:
- 当我们点击
提交按钮
时,如果输入的email
格式不正确,会弹出提示信息 -
email
标签并不会验证内容是否为空,这个需要注意
- 当我们点击
Title
required属性
对于没有自带验证效果的标签,就需要手动添加属性增加验证了
使用方法:
只需要添加required
属性即可,不需要赋值
示例代码:
当控件没有输入任何内容直接点击提交时,会弹出提示
Title
pattern 自定义验证规则
使用
required
标签只能够验证内容是否为空,如果想要验证的更为准确就需要自定义验证规则了
使用方法:
- 在需要添加自定义验证规则的元素中添加
required
标签 - 使用正则表达式编写验证规则
示例代码:
当我们输入的内容跟验证条件不符时,就会弹出对应的提示
Title
自定义验证信息
系统的提示消息只能够提示格式错误,如果想要更为详细的就需要我们通过js来自定义了
使用方法:
- 注册事件:
oninput:输入时
,oninvalid验证失败
- 设置自定义信息
dom.setCustomValidity("这里输入提示信息");
示例代码:
输入时,会弹出oninput
绑定的代码
验证失败时,会弹出oninvalid
绑定的代码
Title
总结
- 优点:
- html5自带的验证使用便捷
- 不需要额外的js框架
- 缺点:
- 兼容性问题
- 如果想要兼容所有浏览器,建议使用
js验证框架