HTML5新的语义标签和属性&表单新特性
HTML5新特性 —— 十大新特性
(1)新的语义标签和属性
(2)表单新特性
(3)视频和音频
(4)Canvas绘图
(5)SVG绘图
(6)地理定位
(7)拖放API
(8)WebWorker
(9)WebStorage
(10)WebSocket
HTML5表单新特性
(1)新的input type
(2)新的表单标签
(3)表单标签的新属性
HTML5表单新特性之——新的input type—— 了解
<input type="">
HTML5之前已有的input type:
text、password、radio、checkbox、file、submit、reset、button、image、hidden
HTML5新增加的input type:
(1)email:邮件输入域,在表单提交时提供简单的邮箱格式验证,并弹出一个提示窗口(可定制内容不能定制样式)
<input type="email">
(2)url:URL地址输入域,在表单提交时提供简单的URL地址格式验证,并弹出一个提示窗口(可定制内容不能定制样式)
<input type="url">
(3)number:数字输入域,在表单提交时提供简单的数字格式验证,并弹出一个提示窗口(可定制内容不能定制样式)
<input type="number" min="" max="" step="">
(4)tel:电话号码输入域,在手机浏览器中弹出数字输入键盘
<input type="tel">
(5)search:搜索输入域,在手机浏览器中右下角呈现搜索按键
<input type="search">
(6)range:范围选择控件,帮助用户在一定范围内选择一个数字
<input type="range" min="" max="" step="">
实现一个调色板
1 <!DOCTYPE html> 2 <html> 3 <head lang="en"> 4 <meta charset="UTF-8"> 5 <title></title> 6 <style> 7 #box { 8 width: 200px; 9 height: 100px; 10 border: 1px solid #aaa; 11 } 12 input[type="range"] { 13 vertical-align: middle; 14 } 15 </style> 16 </head> 17 <body> 18 <h3>练习:新的input type——range</h3> 19 20 <div id="box"></div> 21 红色:<input type="range" max="255" value="255" id="red"><span>255</span><br> 22 绿色:<input type="range" max="255" value="255" id="green"><span>255</span><br> 23 蓝色:<input type="range" max="255" value="255" id="blue"><span>255</span><br> 24 25 <script> 26 var list = document.querySelectorAll('[type="range"]'); 27 for(var i=0; i<list.length; i++){ 28 range = list[i]; 29 range.onchange = function(){ 30 //修改range后面的span的内容 31 this.nextElementSibling.innerHTML = this.value; 32 //修改上方div#box的背景颜色 33 setBoxBG(); 34 } 35 } 36 function setBoxBG(){ 37 var r = red.value; 38 var g = green.value; 39 var b = blue.value; 40 box.style.background = `rgb(${r},${g},${b})`; 41 } 42 43 </script> 44 45 46 47 </body> 48 </html>
效果如下图

(7)color:颜色选择控件,浏览器并未自己实现颜色选择框,而是使用操作系统自带的颜色选择控件
<input type="color">
(8)date:日期选择控件,FF没有实现,推荐使用第三方插件代替,如jQueryUI-datepicker、laydate等
<input type="date">
(9)month:月份选择控件,FF没有实现
<input type="month">
(10)week:星期选择控件,FF没有实现
<input type="week">
HTML5新特性之表单新特性——新的表单元素
HTML5之前FORM可以有的标签——用于数据提交:
INPUT、TEXTAREA、SELECT/OPTION、BUTTON
HTML5新增表单元素——用于信息提示,不能用于数据提交:
(1)datalist:数据列表,配合option使用,本身为不可见元素,为普通的input提供输入建议列表
<datalist id="l"><option>XXX</option></datalist>
<input type="text" list="l">
(2)progress:进度条,未指定value属性则显示为“进行中”样式;若指定了value(默认在0~1之间)就可以控制其显示的进度
<progress value="0.5"></progress>
使用定时器让进度条不断前进,到100%就要停止
1 <!DOCTYPE html> 2 <html> 3 <head lang="en"> 4 <meta charset="UTF-8"> 5 <title></title> 6 </head> 7 <body> 8 <h3>HTML5表单新特性——新的表单元素</h3> 9 10 <form> 11 <datalist id="dishList"> 12 <option>鱼香肉丝</option> 13 <option>青椒肉丝</option> 14 <option>京酱肉丝</option> 15 <option>茄丁肉丝</option> 16 </datalist> 17 中午午餐:<input type="text" list="dishList" name="lunch" autocomplete="off"><br> 18 19 下载进度:<progress id="p1"></progress><br> 20 下载进度:<progress id="p2" value="0.0"></progress><br> 21 22 <!--最优值在合理下限/上限之间:黄-绿-黄--> 23 机油含量:<meter id="m1" min="0" max="100" low="30" high="60" optimum="45" value="0"></meter><br> 24 25 <!--最优值在合理下限之下:绿-黄-红--> 26 PM25含量:<meter id="m2" min="0" max="500" low="100" high="300" optimum="50" value="0"></meter><br> 27 28 <!--最优值在合理上限之上:红-黄-绿--> 29 每月工资:<meter id="m3" min="0" max="100000" low="20000" high="60000" optimum="80000" value="0"></meter><br> 30 31 单价:¥100.00 数量:<input type="number" min="1" max="99" value="2"> 小计:¥ 32 <output>200.00</output><br> 33 34 35 <input type="submit"/> 36 </form> 37 38 <script> 39 var timer = setInterval(function(){ 40 var v = p2.value; 41 v = parseFloat(v); 42 v += 0.05; 43 p2.value = v; 44 if(v>=1){ 45 clearInterval(timer); 46 } 47 },100) 48 49 var tm1 = setInterval(function(){ 50 var v = m1.value; 51 v = parseInt(v); 52 v+=2; 53 m1.value = v; 54 if(v>=100){ 55 clearInterval(tm1); 56 } 57 }, 100) 58 var tm2 = setInterval(function(){ 59 var v = m2.value; 60 v = parseInt(v); 61 v+=10; 62 m2.value = v; 63 if(v>=500){ 64 clearInterval(tm2); 65 } 66 }, 100) 67 var tm3 = setInterval(function(){ 68 var v = m3.value; 69 v = parseInt(v); 70 v+=1000; 71 m3.value = v; 72 if(v>=100000){ 73 clearInterval(tm3); 74 } 75 }, 100) 76 </script> 77 78 79 80 81 82 </body> 83 </html>
效果图如下:

(3)meter:刻度尺/度量衡,用红黄绿三色表示出一个数值所处的范围:不可接受/可以接受/最优范围
<meter min="最小可能值" max="最大的可能值" low="合理的下限" high="合理的上限" optimum="最优值" value="实际值"></meter>
(4) output:输出,用于描述表单中的计算结果,语义标签,样式与SPAN无异。
<output>xxx</output>
6.HTML5新特性表单新特性——表单元素新的属性——重点
HTML5之前表单元素可用的属性:
id、class、title、style、type、name、value、checked、selected、disabled、readonly
HTML5之前表单元素新增的属性:
(1)autocomplete:on/off,自动补全,是否自动记录之前提交的数据,以用于下一次输入建议
<input autocomplete="off">
(2)placeholder:站位符,用于在输入框中显示提示性文字,与value不同,不能被提交
<input placeholder="提示性文字">
(3)autofocus:false/true,自动获得输入焦点
<input autofocus>
(4)multiple:false/true,是否允许多个输入值,若声明了该属性,输入框中(如email)就允许输入用逗号分隔的多个值
<input type="email" multiple>
(5)form:为一个元素指定form属性,值为某个表单的ID,则此输入域可以放到表单的外部
<form id="f"></form>
<input form="f">
========上述五个属性是新的通用属性===========
=======上述六个属性是输入验证相关属性========
(6)required:false/true,必需的/必填项,在表单提交时会验证是否有输入,没有输入则弹出提示消息
<input required>
(7)maxlength:最大长度,在有输入的情况下,限定输入域中字符的个数
<input maxlength="9">
(8)minlength:最小长度,在有输入的情况下,限定输入域中字符的个数,不是HTML5标准属性,仅部分浏览器支持(如Chrome)
<input minlength="6">
(9)min:限定输入的数字的最小值
<input min="">
(10)max:限定输入的数字的最大值
<input max="">
(11)step:限定输入的数字的步长,与min属性连用
<input step="">
(12)pattern:指定一个正则表达式,对输入进行验证
<input pattern="1[3578]\d{9}">
注意:上述正则表达式可以省略^和$
7.总结:HTML5表单新特性:
(1)新的input type——10个
email、url、number、tel、search、range、color、date、month、week
(2)新的表单元素——4个
datalist、progress、meter、output
(3)表单元素的新属性——12个
autocomplete、autofocus、placeholder、multiple、form
required、maxlength、minlength、min、max、step、pattern
注意:加粗的是当前常用的!红色的特性可能弹出错误消息。
8.如何定制表单2.0中的错误提示消息内容——难点&掌握
HTML5为每个标签对应的JS对象添加了新属性,以标识用户输入的有效性:
input.validity {
badInput:false,无效的输入,如email输入无效
typeMismatch:false,类型不匹配,如number中出现字符
valueMissing:false,值缺失,如required验证失败
tooLong:false,输入的内容超过maxlength限制
tooShort:false,输入的内容不满足minlength限制
rangeOverflow:false,输入的数字超过max
rangeUnderflow:false,输入的数字不满足min
stepMismatch:false,步长不匹配
patternMismatch:false,正则表达式不匹配
customError:false,是否存在自定义错误
valid:true,输入值是否有效
}
注意:
(1)最后的validity.valid属性,只有其它属性都为false(没有任何错误),valid值为true;否则只要任何一个其它属性为true(说明有某方面的错误),valild值为false。
(2)上述属性的值会随着输入域中值的改变而立即改变,无需等到表单提交。
(3)使用input.setCustomValidity('XXX')可以生成一个自定义错误消息,使得validity.customError属性变为true;若执行input.setCustomValidity('')可以删除自定义错误消息,使得validity.customError属性变为false
(4)自定义错误消息的优先级高于任何系统自带的错误消息优先级。

浙公网安备 33010602011771号