# HTML5表单
表单是一个容器,用来收集客户端要提交到服务端的信息。
# HTML5表单元素
# datalist 元素
datalist 元素用于为文本框提供一个可供选择的列表,使用 datalist 元素来为表单小部件提供建议的、自动完成的值,并使用一些 option 子元素来指定要显示的值。然后使用 list 属性将数据列表绑定到一个文本域(通常是一个 <input> 元素)。
一旦数据列表与表单小部件相关联,它的选项用于自动完成用户输入的文本。通常,这是作为一个下拉框向用户展示的,在输入框中输入可能匹配的内容。
例子:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body>
<label for="myColor">What's your favorite color?</label>
<input type="text" name="myColor" id="myColor" list="mySuggestion" />
<datalist id="mySuggestion">
<option>black</option>
<option>blue</option>
<option>green</option>
<option>red</option>
<option>white</option>
<option>yellow</option>
</datalist>
</body>
</html>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
也可以写成下面这样:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body>
<label for="myColor">What's your favorite color?</label>
<input type="text" name="myColor" id="myColor" list="mySuggestion" />
<datalist id="mySuggestion">
<option value="black"></option>
<option value="blue"></option>
<option value="green"></option>
<option value="red"></option>
<option value="white"></option>
<option value="yellow"></option>
</datalist>
</body>
</html>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
运行效果为:

# HTML5表单新增的属性
# autocomplete 属性
autocomplete 属性规定表单是否应该启用自动完成功能:自动完成允许浏览器预测对字段的输入,当用户在字段开始键入时,浏览器基于之前键入过的值,应该显示出在字段中填写的选项。当 autocomplete 属性值为 on 时表示启用自动完成功能,为 off 时表示关闭。autocomplete 属性适用于 <form>,以及下面的 <input> 类型:text, search, url, telephone, email, password, datepickers, range 以及 color。
例子:
<body>
<form action="#" method="get" autocomplete="on">
Name:<input type="text" name="name" /><br />
E-mail: <input type="email" name="email" autocomplete="off" /><br />
<input type="submit" value="提交" />
</form>
</body>
2
3
4
5
6
7
运行效果为:

# autofocus 属性
autofocus 属性规定在页面加载时,域自动地获得焦点。适用于所有 <input> 标签的类型。
例子:
<body>
<form action="#" method="get">
Name:<input type="text" name="user_name" autofocus="autofocus" /><br />
<input type="submit" value="提交" />
</form>
</body>
2
3
4
5
6
运行效果为:
注:大家可以把上面代码中 autofocus 属性删掉对比看看效果。
# form 属性
form 属性规定输入域所属的一个或多个表单。form 属性适用于所有 <input> 标签的类型。form 属性必须引用所属表单的 id。
例子:
<body>
<form action="#" method="get" id="user_form">
First name:<input type="text" name="fname" />
<input type="submit" value="提交" />
</form>
<p>
下面的输入域在 form 元素之外,但仍然是表单的一部分, 也就是说提交按钮会把
first name 和 last name的值都提交。
</p>
Last name: <input type="text" name="lname" form="user_form" />
</body>
2
3
4
5
6
7
8
9
10
11
12
13
运行效果为:

注:如需引用一个以上的表单,请使用空格分隔的列表。
# multiple 属性
multiple 属性规定输入域中可选择多个值,适用于以下类型的 <input> 标签:email 和 file。
例子:
<body>
<form action="#" method="get" id="user_form">
选择文件: <input type="file" name="file" multiple="multiple" />
<input type="submit" value="提交" />
</form>
</body>
2
3
4
5
6
# novalidate 属性
novalidate 属性规定在提交表单时不应该验证 form 或 input 域。适用于 <form>,以及下面的 <input> 类型:text, search, url, telephone, email, password, datepickers, range 以及 color。
例子:
<body>
<form action="#" method="get" id="user_form" novalidate="true">
E-mail: <input type="email" name="user_email" />
<input type="submit" value="提交" />
</form>
</body>
2
3
4
5
6
# pattern 属性
pattern 属性规定用于验证 input 域的模式(pattern)。模式(pattern) 是正则表达式。pattern 属性适用于以下类型的 <input> 标签:text, search, url, telephone, email 以及 password。
例子:
<body>
<form action="#" method="get">
Name:
<input type="text" name="name" pattern="[A-z]{4}" title="请输入四个字母" />
<input type="submit" value="提交" />
</form>
</body>
2
3
4
5
6
7
运行效果为:

注:想要了解更多正则表达式的语法,请访问正则表达式手册 (opens new window)。
# placeholder 属性
placeholder 属性提供一种提示(hint),描述输入域所期待的值。适用于以下类型的 <input> 标签:text, search, url, telephone, email 以及 password。提示(hint)会在输入域为空时显示出现,会在输入域获得焦点时消失。
例子:
<body>
<form action="#" method="get">
<input type="search" name="user_search" placeholder="实验楼" />
<input type="submit" value="提交" />
</form>
</body>
2
3
4
5
6
运行效果为:
# required 属性
required 属性规定必须在提交之前填写输入域(不能为空)。适用于以下类型的 <input> 标签:text, search, url, telephone, email, password, date pickers, number, checkbox, radio 以及 file。
例子:
<body>
<form action="#" method="get">
<input type="search" name="user_search" required="required" />
<input type="submit" value="提交" />
</form>
</body>
2
3
4
5
6
运行效果为:

# HTML5输入类型
HTML5 拥有多个新的表单输入类型。这些新特性提供了更好的输入控制和验证。
# Input 类型 - email
email 类型用于应该包含 e-mail 地址的输入域。在提交表单时,会自动验证 email 域的值。
例子:
<body>
<form action="#" method="get">
E-mail: <input type="email" name="user_email" /><br />
<input type="submit" value="提交" />
</form>
</body>
2
3
4
5
6
运行效果为:

# Input 类型 - url
url 类型用于应该包含 URL 地址的输入域。在提交表单时,会自动验证 url 域的值。
例子:
<body>
<form action="#" method="get">
Url: <input type="url" name="user_url" /><br />
<input type="submit" value="提交" />
</form>
</body>
2
3
4
5
6
运行效果为:

# Input 类型 - number
number 类型用于应该包含数值的输入域。属性 max 设定允许输入的最大值,属性 min 设定允许输入的最小值,属性 value 设定默认值,属性 step 设定合法的数字间隔(比如 step 的值为 2,则合法的数字为 -2,0,2,4 等)。
例子:
<body>
<form action="#" method="get">
number:<input
type="number"
name="points"
min="0"
max="10"
step="2"
value="2"
/><br />
<input type="submit" value="提交" />
</form>
</body>
2
3
4
5
6
7
8
9
10
11
12
13
运行效果为:

# Input 类型 - range
range 类型用于应该包含一定范围内数字值的输入域。range 类型显示为滑动条。同样的 range 也有 max,min,value,step 属性与上面所讲的 number 中的一致。
例子:
<body>
<form action="#" method="get">
range:
<input
type="range"
name="points"
min="1"
max="10"
value="2"
step="2"
/><br />
<input type="submit" value="提交" />
</form>
</body>
2
3
4
5
6
7
8
9
10
11
12
13
14
运行效果为:
# Input 类型 - Date Pickers(日期选择器)
HTML5 拥有多个可供选取日期和时间的新输入类型:
- date - 选取日、月、年
- month - 选取月、年
- week - 选取周和年
- time - 选取时间(小时和分钟)
- datetime - 选取时间、日、月、年(UTC 时间)注意:此类型已被弃用,目前大多数浏览器都不再支持。
- datetime-local - 选取时间、日、月、年(本地时间)
例子:
<body>
<form action="#" method="get">
Date: <input type="date" name="user_date" /><br />
<input type="submit" value="提交" />
<br /><br />
Month: <input type="month" name="user_month" /><br />
<input type="submit" value="提交" />
</form>
</body>
2
3
4
5
6
7
8
9
运行效果为:

# Input 类型 - color
color 类型用于选择颜色。
例子:
<body>
<form action="#" method="get">
<input type="color" name="colordemo" />
<input type="submit" value="提交" />
</form>
</body>
2
3
4
5
6
运行效果为:
