购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.2 表单元素

在HTML4.01中,表单的类型以及使用方法都非常有限。HTML5在HTML4.01的基础上,对表单进行了以下两个方向的扩展。

新增input元素类型。

新增其他表单元素。

这两个方向的扩展,使得代码量大大减少,可以极大地提高开发效率。

2.2.1 新增input元素类型

在HTML5中,大量地增加了input元素的种类。换句话说就是,input元素的type属性新增了大量属性值,如表2-1、表2-2所示。

表2-1 新增的type属性值(验证型)

表2-2 新增的type属性值(取值型)

续表

除了表2-2列出的,type属性还有一个取值:datetime。不过,Chrome、Firefox、IE等浏览器的最新版本中已经不再支持了,小伙伴们如果在其他地方看到的话,直接忽略即可。

1.验证型

email

当type属性取值为“email”时,表示这是输入电子邮件的文本框(语义化)。

语法

<input type="email" />

举例

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8" />

<title></title>

</head>

<body>

<form method="post">

<p><label>电子邮件:<input type="email" /></label></p>

<input type="submit" value="提交" />

</form>

</body>

</html>

浏览器预览效果如图2-8所示。

图2-8 email类型

分析

当我们输入非电子邮件格式的字符,然后点击【提交】按钮时,会发现无法提交并且弹出提示内容,效果如图2-9所示。

图2-9 提交时效果

这里有一点要说明,即必须是submit按钮才会弹出提示内容,使用其他按钮(如button按钮)则不会。这是因为email类型的文本框采用了浏览器内置的验证机制,而浏览器内置的验证机制必须使用submit按钮才会触发。

tel

当type属性取值为“tel”时,表示这是输入电话号码的文本框(语义化)。

语法

<input type="tel" />

举例

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8" />

<title></title>

</head>

<body>

<form method="post">

<p><label>电话号码:<input type="tel" /></label></p>

<input type="submit" value="提交" />

</form>

</body>

</html>

浏览器预览效果如图2-10所示。

图2-10 tel类型

分析

当我们输入非电话号码格式的字符,然后点击【提交】按钮时,却发现居然可以提交!这是怎么回事呢?其实tel类型文本框并不具备完备的验证功能,如果想要达到验证效果,则需要结合3.2节介绍的pattern属性来实现。

url

当type属性取值为“url”时,表示这是输入URL的文本框(语义化)。

语法

<input type="url" />

举例

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8" />

<title></title>

</head>

<body>

<form method="post">

<p><label>你的网址:<input type="url" /></label></p>

<input type="submit" value="提交" />

</form>

</body>

</html>

浏览器预览效果如图2-11所示。

图2-11 url类型

分析

当我们输入非URL格式的字符,然后点击【提交】按钮时,会发现无法提交并且弹出提示内容,效果如图2-12所示。

图2-12 提交时效果

所谓的URL格式字符,指的是以“http://”或者“https://”开头的网络地址。有些小伙伴会发现,像https://www、tps://www.lvyestudy.com这种字符串也能提交!原因也是一样的:url类型文本框也不具备完备的验证功能,如果想要达到验证效果,需要结合pattern属性来实现。

2.取值型

range

当type属性取值为“range”时,我们可以通过拖动滑动条获取某一个范围内的数字。

语法

<input type="range" min="最小值" max="最大值" step="间隔数"/>

说明

min属性用于设置最小值,max属性用于设置最大值,step属性用于设置间隔数。这3个属性的取值可以是整数,也可以是小数。

举例

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8" />

<title></title>

<script>

window.onload = function(){

var input = document.getElementsByTagName("input")[0];

var output = document.getElementsByTagName("output")[0];

//获取range的初始值

output.value = input.value;

//拖动滑动条,改变output值

input.onchange = function(){

output.value = input.value;

};

}

</script>

</head>

<body>

<form method="post">

<input type="range" min="-10" max="10" step="5" value="-10"/>

<output></output>

</form>

</body>

</html>

浏览器预览效果如图2-13所示。

图2-13 range类型

分析

<input type="range" min="-10" max="10" step="5" value="-10"/>

上面这句代码表示:滑动条最小值为-10,最大值为10,每次拖动只能改变5(增加5或减少5)。value="-10"用于设置滑动条的初始值,有一个很有趣的现象是:设置不同的value值,滑块也会出现在对应数值的位置。在这个例子中,若设置value="5",此时浏览器预览效果如图2-14所示。

图2-14 设置value="5"

在实际开发中,range类型元素都是需要结合JavaScript来操作的,上面这个例子就是最简单也是最经典的。此外,output元素用于定义表单元素的输出结果,我们在这一节的后面会详细介绍。

number

当type属性取值为“number”时,我们可以通过使用微调按钮来获取某一个范围的数字。

语法

<input type="number" min="最小值" max="最大值" step="间隔数"/>

说明

min属性用于设置最小值,max属性用于设置最大值,step属性用于设置间隔数。它们的属性取值可以是整数,也可以是小数。

number类型跟range类型功能非常相似,都是获取某一个范围内的数字。不过两者的外观不一样,其中number类型使用的是“微调按钮”,而range类型使用的是“滑块”。

举例

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8" />

<title></title>

<script>

window.onload = function(){

var input = document.getElementsByTagName("input")[0];

var output = document.getElementsByTagName("output")[0];

//获取number的初始值

output.value = input.value;

//点击微调按钮,改变output值

input.onchange = function(){

output.value = input.value;

};

}

</script>

</head>

<body>

<form method="post">

<input type="number" min="-10" max="10" step="5" value="-10"/>

<output></output>

</form>

</body>

</html>

浏览器预览效果如图2-15所示。

图2-15 number类型

分析

在这个例子中,我们可以直接在文本框中输入数字,也可以通过右边的微调按钮来改变数字。

color

当type属性取值为“color”时,我们可以直接使用浏览器自带的取色工具来获取颜色值。

语法

<input type="color" value=""/>

说明

value属性用于设置颜色初始值,格式必须是十六进制颜色值如#F1F1F1,不能是关键字(如black)和rgba颜色(如#80FFFFFF)。

举例

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8" />

<title></title>

<script>

window.onload = function(){

var input = document.getElementsByTagName("input")[0];

var output = document.getElementsByTagName("output")[0];

//页面一载入,获取color的初始值

output.value = input.value;

//选择颜色,改变output值

input.onchange = function(){

output.value = input.value;

};

}

</script>

</head>

<body>

<form method="post">

<input type="color" value="#000000"/>

<output></output>

</form>

</body>

</html>

浏览器预览效果如图2-16所示。

图2-16 color类型

分析

当我们点击color类型元素时,浏览器会弹出自带的取色工具,以方便直接选取颜色值,如图2-17所示。

图2-17 浏览器自带的取色工具

color类型元素不仅可以选择颜色,还可以将常用的颜色值添加到自定义颜色栏中,以便再次使用,非常方便。

date

当type属性取值为“date”时,我们可以直接使用浏览器自带的日历工具来获取日期(年、月、日)。

语法

<input type="date" value=""/>

说明

value属性用于设置日期初始值,格式必须如“2018-05-20”。

举例

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8" />

<title></title>

</head>

<body>

<form method="post">

<input type="date" value="2018-05-20"/>

</form>

</body>

</html>

浏览器预览效果如图2-18所示。

图2-18 date类型

分析

当我们点击date类型元素时,浏览器会弹出自带的日历工具,以方便直接选取日期,如图2-19所示。

图2-19 浏览器自带的日历工具

此外,value属性用于设置日期初始值,格式必须如“2018-05-20”,像“2018--5-20”这种是无效的。

time

当type属性取值为“time”时,我们可以直接使用浏览器自带的工具来获取时间(时、分)。

语法

<input type="time" value=""/>

说明

value属性用于设置时间初始值,格式必须如“08:04”。

举例

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8" />

<title></title>

</head>

<body>

<form method="post">

<input type="time" value="08:04"/>

</form>

</body>

</html>

浏览器预览效果如图2-20所示。

图2-20 time类型

分析

当我们点击time类型元素时,文本框右边会出现微调按钮,以方便调整时间,如图2-21所示。

图2-21 微调按钮

此外,value属性用于设置时间初始值,格式必须如“08:04”,像“8:4”这种是无效的。

month

当type属性取值为“month”时,我们可以使用浏览器自带的工具来获取“月数”。

语法

<input type="month" value=""/>

说明

value属性用于设置初始值,格式必须如“2018-08”。

举例

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8" />

<title></title>

</head>

<body>

<form method="post">

<input type="month" value="2018-08"/>

</form>

</body>

</html>

浏览器预览效果如图2-22所示。

图2-22 month类型

分析

当我们点击month类型元素时,浏览器会弹出选择框,以方便选择哪个月份,如图2-23所示。

图2-23 月份选择框

week

当type属性取值为“week”时,我们可以使用浏览器自带的工具来获取“周数”。

语法

<input type="week" value=""/>

说明

value属性用于设置初始值,格式必须如“2018-W04”。其中,“W”是“week”的缩写。

举例

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8" />

<title></title>

</head>

<body>

<form method="post">

<input type="week" value="2018-W04"/>

</form>

</body>

</html>

浏览器预览效果如图2-24所示。

图2-24 week类型

分析

当我们点击week类型元素时,浏览器会弹出选择框,以方便选择第几周,如图2-25所示。

图2-25 星期选择框

2.2.2 新增其他表单元素

前面介绍的都是input元素新增的类型,实际上HTML5还新增了3个表单元素:output、datalist、keygen。

1.output元素

在HTML5中,我们可以使用output元素来定义表单元素的输出结果或计算结果。

语法

<output></output>

说明

output元素是一个行内元素,只不过它比span元素更具有语义化。

举例

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8" />

<title></title>

<script>

window.onload = function(){

var input = document.getElementsByTagName("input")[0];

var output = document.getElementsByTagName("output")[0];

//获取range的初始值

output.value = input.value;

//拖动滑动条,改变output值

input.onchange = function(){

output.value = input.value;

};

}

</script>

</head>

<body>

<form method="post">

<input type="range" min="-10" max="10" step="5" value="-10"/>

<output></output>

</form>

</body>

</html>

浏览器预览效果如图2-26所示。

图2-26 output元素

分析

output元素一般放在form元素内部,并且配合其他表单元素(如文本框等)来使用。我们在此之前接触output元素很多了,因此这里不再赘述。

2.datalist元素

在HTML5中,我们可以使用datalist元素来为文本框提供一个可选的列表。

语法

<input type="text" list="" />

<datalist id="">

<option label="" value=""></option>

<option label="" value=""></option>

<option label="" value=""></option>

</datalist>

说明

如果想要把datalist绑定到某个文本框,需要设置该文本框的list属性值等于datalist的id值。

举例

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8" />

<title></title>

</head>

<body>

<form method="post">

输入网址:<input type="text" list="urlList"/>

<datalist id="urlList">

<option label="绿叶学习网" value="http://www.lvyestudy.com"></option>

<option label="人民邮电出版社有限公司" value="http://www.ptpress.com.cn"></option>

<option label="异步社区" value="http://www.epubit.com"></option>

</datalist>

</form>

</body>

</html>

浏览器预览效果如图2-27所示。

图2-27 datalist元素

3.keygen元素

在HTML5中,我们可以使用keygen元素来生成页面的密钥。如果表单内部有keygen元素,则提交表单时,keygen元素将生成一对密钥:一个保存在客户端,称为“私密钥(Private Key)”;另一个发送到服务器,称为“公密钥(Public Key)”。

语法

<keygen />

举例

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8" />

<title></title>

</head>

<body>

<form method="post">

<keygen />

<input type="submit" value="提交"/>

</form>

</body>

</html>

浏览器预览效果如图2-28所示。

图2-28 keygen元素

分析

keygen元素主要是作为客户端安全保护的一种方法,不过它在各大浏览器中的兼容性很差,小伙伴们了解一下即可,不需要深入。 dCOC+QQgOBcWUEgNECnTxqiNaXSwSH2aGoinZ6B2uhQXFKpTErqfQ9kSSBTh9Xj+

点击中间区域
呼出菜单
上一章
目录
下一章
×