HTML5 表单验证失败的提示语问题


Posted in HTML / CSS onJuly 13, 2017

前言

前端的童鞋在写页面时, 都不可避免的总会踩到 表单验证 这个坑. 这时候, 我们就要跪了, 因为要写一堆 js 来检查. 但是自从 H5 出现后, 很多常见的 表达验证 , 它都已经帮我们实现了, 让我们减轻了很多负担, 就好像下面的:

邮箱地址验证:
 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Test</title>
</head>
<body>
    <form action="">
        <label >
            邮箱: <input type="email">
        </label>
        <input type="submit">
    </form>
</body>
</html>

HTML5 表单验证失败的提示语问题

邮箱验证是 H5 自身支持的, 但是我们要验证的场景和情况是多种多样的, 那该怎么办? 用回 Js 吗? 很明显没这么蛋疼, 因为 H5 提供了 pattern 属性, 让我们自食其力! 我们可以在 pattern 指定正则表达式, 只要正则写的好, 验证就没烦恼!

正则限定11位数字:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Test</title>
</head>
<body>
    <form action="">
        <label >
            数字: <input type="text" pattern="^\d{11}$">
        </label>
        <input type="submit">
    </form>
</body>
</html>

HTML5 表单验证失败的提示语问题

问题

大家可以尝试下, 在输入非11位的数字, 都会报错, 这就是 pattern 的功劳. 但是不知道大家发现了一个蛋疼的现象没? 就是如果咱们使用 pattern 的方式去验证表单, 在验证失败时, 它的提示都是 请与所请求的格式保持一致 , 我的天, 我们的用户怎么知道所请求的格式是什么鬼, 总不能让他们去看源码吧, 要真这样, 我们连页面都不用写了, 直接让他们把钱给我们得了, 开个玩笑~

解决方案

有问题, 咱们就得解决, 在面向谷歌编程许久, 终于觅得一良方:

oninvalid:提交的input元素的值为无效值时(这里是正则验证失败),触发

oninvalid事件。oninvalid属于Form 事件。

setCustomValidity():这个是HTML5内置的JS方法,用来自定义提示信息

原来可以通过 oninvalid 和 setCustomValidity 来自定义提示, 那这就好办了, 修改源代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Test</title>
</head>
<body>
    <form action="">
        <label >
            数字: <input type="text" pattern="^\d{11}$" oninvalid="setCustomValidity('请输入11位数字')">
        </label>
        <input type="submit">
    </form>
</body>
</html>

结果:

HTML5 表单验证失败的提示语问题

终于不是那个蛋疼的"格式"了, 现在表单验证提示已经很明确的告诉我们, 这里应该输入的是什么样的数据, 这样用户就能更好的修改自己的输入了!

以上所述是小编给大家介绍的HTML5 表单验证失败的提示语问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

HTML / CSS 相关文章推荐
可自定义箭头样式的CSS3气泡提示框
Mar 16 HTML / CSS
HTML5+CSS3 实现灵动的动画 TAB 切换效果(DEMO)
Sep 15 HTML / CSS
CSS3新增布局之: flex详解
Jun 18 HTML / CSS
CSS3实现彩色进度条动画的示例
Oct 29 HTML / CSS
基于HTML5的WebSocket的实例代码
Aug 15 HTML / CSS
分享一个H5原生form表单的checkbox特效代码
Feb 26 HTML / CSS
HTML5 Web存储方式的localStorage和sessionStorage进行数据本地存储案例应用
Dec 09 HTML / CSS
HTML5单页面手势滑屏切换原理分析
Jul 10 HTML / CSS
浅谈移动端网页图片预加载方案
Nov 05 HTML / CSS
手把手教你实现一个canvas智绘画板的方法
Mar 04 HTML / CSS
HTML如何让IMG自动适应DIV容器大小的实现方法
Feb 25 HTML / CSS
使用 CSS 轻松实现一些高频出现的奇形怪状按钮
Dec 06 HTML / CSS
HTML5地理定位_动力节点Java学院整理
Jul 12 #HTML / CSS
HTML5中input[type='date']自定义样式与日历校验功能的实现代码
Jul 11 #HTML / CSS
html5组织内容_动力节点Java学院整理
Jul 10 #HTML / CSS
html5页面结构_动力节点Java学院整理
Jul 10 #HTML / CSS
HTML5单页面手势滑屏切换原理分析
Jul 10 #HTML / CSS
HTML5中图片之间的缝隙完美解决方法
Jul 07 #HTML / CSS
html5是什么_动力节点Java学院整理
Jul 07 #HTML / CSS
You might like
php防攻击代码升级版
2010/12/29 PHP
php simplexmlElement操作xml的命名空间实现代码
2011/01/04 PHP
用原生JavaScript实现jQuery的$.getJSON的解决方法
2013/05/03 Javascript
js data日期初始化的5种方法
2013/12/29 Javascript
js jquery分别实现动态的文件上传操作按钮的添加和删除
2014/01/13 Javascript
JS操作iframe里的dom(实例讲解)
2014/01/29 Javascript
Jquery跳到页面指定位置的方法
2014/05/12 Javascript
js阻止事件追加的具体实现
2014/10/15 Javascript
分享12个实用的jQuery代码片段
2016/03/09 Javascript
利用JS轻松实现获取表单数据
2016/12/06 Javascript
ionic开发中点击input时键盘自动弹出
2016/12/23 Javascript
浅谈JavaScript的计时器对象
2016/12/26 Javascript
微信小程序实现图片轮播及文件上传
2017/04/07 Javascript
关于vue的语法规则检测报错问题的解决
2018/05/21 Javascript
vue v-for 使用问题整理小结
2019/08/04 Javascript
vuex(vue状态管理)的特殊应用案例分享
2020/03/03 Javascript
微信小程序实现下滑到底部自动翻页功能
2020/03/07 Javascript
[50:28]LGD女子学院第三期 DOTA2复仇之魂教学
2013/12/24 DOTA
在Linux下调试Python代码的各种方法
2015/04/17 Python
举例讲解Python设计模式编程中的访问者与观察者模式
2016/01/26 Python
Python单体模式的几种常见实现方法详解
2017/07/28 Python
python3.5 tkinter实现页面跳转
2018/01/30 Python
使用python去除图片白色像素的实例
2019/12/12 Python
浅谈django不使用restframework自定义接口与使用的区别
2020/07/15 Python
Html5百叶窗效果的示例代码
2017/12/11 HTML / CSS
社区优秀志愿者材料
2014/02/02 职场文书
创建服务型党组织实施方案
2014/02/25 职场文书
教育英语专业毕业生的求职信
2014/03/13 职场文书
教师产假请假条范文
2014/04/10 职场文书
优质服务口号
2014/06/11 职场文书
2014年班组工作总结
2014/11/20 职场文书
2015年保险业务员工作总结
2015/05/27 职场文书
邹越演讲观后感
2015/06/15 职场文书
800字作文之大雪
2019/12/04 职场文书
CentOS MySql8 远程连接实战
2022/04/19 MySQL
ant design charts 获取后端接口数据展示
2022/05/25 Javascript