HTML5新增元素、属性以及表单,正则表达式

HTML5新增元素及其属性

HTMl5新增标签,有语义,可以更容易被搜索到。
常见的有以下几种标签元素,所有的新增元素可以w3cschool手册查看。

HTML5新增结构元素

结构标签描述
header页面或页面中某一个区块的页眉,通常是一些引导和导航信息。
nav可以作为页面导航的链接组
section页面中的一个内容区块,通常由内容及其标签组成
article代表一个独立的、完整地相关内容快,可独立于页面其他内容使用
aside非正文的内容,与页面的主要内容是分开的,被删除而不会影响到网页的内容
footer页面或页面中某一个区块的脚注

结构标签具体用法不详细描述。

HTML5新增网页元素

网页元素标签描述
video定义视频,如影片或者其他视频
audio定义音频
canvas定义图形
datalist定义可选数据的列表
time标签定义日期或时间
mark在视觉上向用户呈现那些需要突出的文字
progress运行中的进度(进程)

video,audio和canvas后面再具体详细描述。

mark

<p>测试<mark>mark</mark>标签</p>

测试mark标签

datalist

    <input type="text" list="test">
    <datalist id="test">
        <option value="1">the first</option>
        <option value="2">the second</option>
        <option value="3">the third</option>
    </datalist>

datalist效果
选择后value的值会填入text框,后面的可以是对值的说明。

progress

<p><progress ></progress></p> 
<p><progress value="20" max="100"></progress></p>

进度条
上面没有填属性的对应对第一个样式,是动态的
第二个样式是有值的情况下对应的进度条

time
不多说了,主要是语义化。

HTML5废除的元素

  • 能用CSS替代的元素:<big> <center> <font> <s> <u> <strike>
  • 不再使用frame框架
  • 只有部分浏览器支持的元素:<applet> <blink> <bgsound> <marquee>
  • 其他被废除的元素:<rb> <dir> <isindex> <listing> <nextid>

HTML5新增全局属性

全局属性描述
contentEditable规定是否允许用户编辑内容,布尔型属性
designMode规定整个页面是否编辑,需要js来实现,布尔型属性
hidden规定对元素进行隐藏
spellcheck规定是否必须对元素进行拼写或语法检查,布尔型属性
tabindex规定元素的tab键迭制次序
    <p>contenteditable</p>
    <p contenteditable="true">可编辑的行</p>
    <p>hidden</p>
    <p hidden="hidden">被我隐藏了</p>
    <p>tabindex</p>
    <p>
        <input type="text" tabindex="3">
        <input type="text" tabindex="2">
        <input type="text" tabindex="1">
    </p>
    <p></p>
    <!-- <script>
        document.designMode="on";//打开全部可编辑
        document.designMode="off";//关闭全部可编辑
    </script> -->

HTML5新增全局属性

HTML5新 增表单元素及其运用

HTML5新增input类型

input类型描述
email电子邮箱地址文本框,提交表单时会自动验证email的值
url网页的URL,提交表单时会自动验证URL的值
number只包含数值的字段,能够设定对所接受的数字的限定
range滑动条,特定值范围内的数值选择器
search用于搜索引擎(搜索框)
Date pickers拥有多个可供选取日期的新输入类型

新增input属性

input类型描述
autofocus页面加载时自动获取焦点
required规定输入域不能为空
placeholder提供一种提示(hint),输入域为空时显示,获得焦点时消失
pattern规定验证input域的模式(正则表达式)
height、width仅适用于image类型的input标签的图像高度和宽度

validityState对象

Validity属性获取表单元素的validityState对象,改对象包括8个方面的验证结果
var validityState=document.getElementById("uName").validity;
HTML5中querySelector()来获取元素

属性描述
valueMissing必填的表单值为空
typeMismatch输入值与type类型不匹配
patternMismatch输入值与pattern特性的正则不匹配
tooLong输入内容超过限定长度
rangeUnderflow输入值小于min特性的值
rangeOverflow输入值大于max特性的值
stepMismatch输入值不符合step特性规则
customError使用自定义验证错误提示信息

valueMissing
目的:确保表单中的值已填写
用法:将表单元素设置了ruquired特性,则为必填项;如果必填项输入值为空,valueMissing属性会将返回true,否则返回false。
<input type="text" required="required"/>

typeMismatch
目的:保证输入值与预期类型相匹配(url、email等)
用法:指定表单控件的type特性值,如输入值不符合对应的表单类型,typeMismatch属性会将返回true,否则返回false。

patternMismatch
目的:根据表单元素设置的格式规则验证输入是否为有效格式
用法:在表单元素的上设置pattern特性,并赋予适当的匹配规则,如输入值不符合验证模式规则,patternMismatch属性会将返回true,否则返回false。

setCustomValidity,提示内容
invalid 事件:只要发生表单验证,所有未通过验证的表单元素都会触发一个invalid事件。

<div class="body">
        <form action="#" method="post">
            <h2><span></span>注册账号</h2>
            <div class="table">
                <div class="table-row">
                    <div class="table-cell"><label for="nickname"><span>*</span>昵称:</label></div>
                    <div class="table-cell"><input type="text" autofocus="autofocus" placeholder="英文、数字长度为6-10个字符" name="nickname" id="nickname" required pattern="[A-z0-9]{6,10}"></div>
                </div>
                <div class="table-row">
                    <div class="table-cell"><label for="password"><span>*</span>密码:</label></div>
                    <div class="table-cell"><input type="password" placeholder="长度为6-16个字符" name="password" id="password" required pattern="[A-z0-9]{6,16}">                        </div>
                </div>
                <div class="table-row">
                    <div class="table-cell"><label for="tel"><span>*</span>手机号码:</label></div>
                    <div class="table-cell"><input type="tel" placeholder="以13|14|15|17|18开头" name="tel" id="tel" required pattern="^1[34578][0-9]{9}$">
                        <span class="tel-tip">忘记密码时可用手机号找回密码</span></div>
                </div>
                <div class="table-row">
                    <div class="table-cell"><label for="email"><span>*</span>邮箱:</label></div>
                    <div class="table-cell"><input type="email" name="email" id="email" required></div>
                </div>
                <div class="table-row">
                    <div class="table-cell"><label for="age">年龄:</label></div>
                    <div class="table-cell"><input type="age" name="age" id="age"></div>
                </div>
                <div class="submit-box">
                    <button id="submit">立即注册</button>
                </div>
                <div style="height:1px;"></div>
            </div>
        </form>
    </div>
    <script>
        var form = document.querySelector("form");
        form.addEventListener("invalid", function (e) {
            var target_element = e.target;
            var valid = target_element.validity;
            var name = target_element.name;
            switch (name) {
                case "nickname":
                    if (valid.valueMissing) {
                        target_element.setCustomValidity('昵称不能为空');
                    } else if (valid.patternMismatch) {
                        target_element.setCustomValidity('昵称必须为英文、数字长度为6-10个字符');
                    } else {
                        target_element.setCustomValidity("");
                    }
                    break;
                case "password":
                    if (valid.valueMissing) {
                        target_element.setCustomValidity('密码不能为空');
                    } else if (valid.patternMismatch) {
                        target_element.setCustomValidity('密码长度必须为6-16个字符');
                    } else {
                        target_element.setCustomValidity("");
                    }
                    break;
                case "tel":
                    if (valid.valueMissing) {
                        target_element.setCustomValidity('手机号不能为空');
                    } else if (valid.patternMismatch) {
                        target_element.setCustomValidity('请输入正确的手机号');
                    } else {
                        target_element.setCustomValidity("");
                    }
                    break;
                case "email":
                    if (valid.valueMissing) {
                        target_element.setCustomValidity('y邮箱不能为空');
                    } else if (valid.typeMismatch) {
                        target_element.setCustomValidity('请输入正确的邮箱');
                    } else {
                        target_element.setCustomValidity("");
                    }
                    break;
                default:
                    break;
            }
        }, true)
    </script>

HTML5表单
valid伪类
input:valid 验证通过的样式,如上图红色框框
input:invalid 验证未通过的样式,如上图绿色框框

正则表达式

正则表达式
又称正规表示法、常规表示法:使用单个字符串来描述、匹配一系列符合某个句法规则。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。
RegExp对象用于规定在文本中检索的内容
测试工具:http://tool.oschina.net/regex/
使用正则表达式
新建一个RegExp对象:
var reg=/pattern/attributes;
var reg=new RegExp(pattern,attributes);
修饰符:

  • i:执行对大小写不敏感的匹配;
  • g:执行全局匹配 (查找多有匹配而非在找到第一个匹配后停止);
  • m:执行多行匹配。

正则表达式量词详见w3cschool手册

分类量词描述
元字符.匹配任何字符,除换行符(newline)
元字符\d匹配任何数字字符
元字符\s匹配空格
元字符\w匹配任何字母数字(字母或数字)字符
元字符^字符串需以模式起始
元字符$字符串需以模式结束
限定符*限定符前的子模式必须出现0次或多次
限定符+限定符前的子模式必须出现1次或多次
限定符?限定符前的子模式必须出现1次或0次
限定符{n}限定符前的子模式必须出现n次
限定符( )集合字符或/和元字符为子模式
元字符|选替(这个或那个)
字符类[ ]一组匹配单一字符的规则

常用方法:

方法描述
reg.test(string)测试正则表达式是否匹配字符串
reg.exec(string)逐个匹配,并返回当前结果,每次只返回一个数据

String类中可以支持正则的方法:

方法描述
search检索与正则表达式相匹配的值
match找到一个货多个正则表达式的匹配
replace替换与正则表达式匹配的子串
split把字符串分割为字符串数组

表单验证
表单提交时会触发submit事件
当submit事件返回false时可以阻止提交
第一种方式

    <form action="#" method="post" onsubmit="return validate();" id="from">
        <input type="submit">
    </form>
    <script>
         function validate(){
             return false;   //false 会传到onsubmit上
         }
    </script>

第二种方式

    <form action="#" method="post"  id="form">
        <input type="submit">
    </form>
     <script>
        var form = document.querySelector("#form");
        form.addEventListener("submit", function (e) {
            e.preventDefault();   //阻止事件发生
            }, true)
    </script> 

本博客仅用于记录web前端学习情况

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值