使用HTML5的表单验证的简单示例


Posted in HTML / CSS onSeptember 09, 2015

HTML5对表单元素提供了patern属性,它接受一个正则表达式。表单提交时这个正则表达式会被用于验证表单内非空的值,如果控件的值不匹配这个正则表达就会弹出提示框,并阻止表达提交。提示框内的文字可以使用setCustomValidity方法来自定义。

比如下面这个表单内,文本框只接受大陆的手机号,输入其它东西就无法提交
运行

XML/HTML Code复制内容到剪贴板
  1. <!DOCTYPE html>  
  2. <form>  
  3.   <input id="text" pattern="^1[3-9]\d{9}$" required />  
  4.   <input id="button" type="submit" />  
  5. </form>  

注意只有非空的表单才会使用正则验证,如果什么都不输入的话,pattern不会被使用,所以还需要required协助。但是这个代码弹出的提示是这样的:
使用HTML5的表单验证的简单示例

这样的提示文字只有猴子看得懂!所以我们还需要更友好的提示文字,使用setCustomValidity方法来定义。
运行

XML/HTML Code复制内容到剪贴板
  1. <!DOCTYPE html>  
  2. <form>  
  3.   <input id="text" pattern="^1[3-9]\d{9}$" required />  
  4.   <input id="button" type="submit" />  
  5. </form>  
  6. <script>  
  7. text.oninput=function(){   
  8.   text.setCustomValidity("");   
  9. };   
  10. text.oninvalid=function(){   
  11.   text.setCustomValidity("请不要输入火星的手机号好吗?");   
  12. };   
  13. </script>  

使用HTML5的表单验证的简单示例

invalid事件会在表单submit事件之前触发,如果验证不通过的话就不会触发表单的submit。而提交时会先验证所有表单元素是值是否有效。除了提交外还可以手动调用checkValidity方法来执行验证。

上面的例子中我直接对控件设置固定的提示其实不太好,有时候可能需要更详细的提示信息,比如空的时候提示为空、太长的时候提示太长、非数字的时候提示非数字等。这些动作可以通过程序验证后动态地setCustomValidity来实现。

其实我觉得HTML5的这套API设计的很糟糕,虽然可以满足基本需求,但还真不太实用。

手机页面中表单提交用JavaScript验证信息 会弹出窗口,用户体验极差,所以再给出一个手机端用HTML5的属性来验证的示例:

XML/HTML Code复制内容到剪贴板
  1. <input id="name" name="name" placeholder="name" required="" tabindex="1" type="text">    
  2. <input id="email" name="email" placeholder="telephone" required="" tabindex="2" type="text" pattern="(^(\d{3,4}-)?\d{7,8})$|^(13|15|18|14)\d{9}$">    
  3. <input id="subject" name="subject" placeholder="example@domain.com" required="" tabindex="2" type="text">    
  4.  // 主要用了HTML的一下属性   
  5. // 1.placeholder 提供可描述输入字段预期值的提示信息。 该提示会在输入字段为空时显示,并会在字段获   
  6. //得焦点时消失   
  7. //2.required 属性规定必需在提交之前填写输入字段   
  8. //3.pattern  是正则表达式,  里面可以直接填写正则表达式  

使用HTML5的表单验证的简单示例

使用HTML5的表单验证的简单示例

HTML / CSS 相关文章推荐
CSS中一些@规则的用法小结
Mar 09 HTML / CSS
使用CSS3制作倾斜导航条和毛玻璃效果
Sep 12 HTML / CSS
全方位了解CSS3的Regions扩展
Aug 07 HTML / CSS
纯CSS3实现8组超炫酷鼠标滑过图片动画
Mar 16 HTML / CSS
详解CSS3阴影 box-shadow的使用和技巧总结
Dec 03 HTML / CSS
CSS3实现伪类hover离开时平滑过渡效果示例
Aug 10 HTML / CSS
基于 HTML5 WebGL 实现的垃圾分类系统
Oct 08 HTML / CSS
Html5新增标签有哪些
Apr 13 HTML / CSS
canvas进阶之如何画出平滑的曲线
Oct 15 HTML / CSS
Canvas多边形绘制的实现方法
Aug 05 HTML / CSS
amaze ui 的使用详细教程
Aug 19 HTML / CSS
HTML5+CSS+JavaScript实现捉虫小游戏设计和实现
Oct 16 HTML / CSS
详解HTML5中的manifest缓存使用
Sep 09 #HTML / CSS
使用HTML5的Canvas绘制曲线的简单方法
Sep 08 #HTML / CSS
详解HTML5中ol标签的用法
Sep 08 #HTML / CSS
深入解析HTML5中的Blob对象的使用
Sep 08 #HTML / CSS
深入解析HTML5使用SVG图像时的viewBox属性用法
Sep 02 #HTML / CSS
HTML5 Canvas 绘图——使用 Canvas 绘制图形图文教程 使用html5 canvas 绘制精美的图
Aug 31 #HTML / CSS
详解HTML5中的元素与元素
Aug 17 #HTML / CSS
You might like
使用php完成常见的文件上传功能(推荐)
2017/01/13 PHP
用document.documentElement取代document.body的原因分析
2009/11/12 Javascript
50款非常棒的 jQuery 插件分享
2012/03/29 Javascript
js实现页面转发功能示例代码
2013/08/05 Javascript
使用JQuery快速实现Tab的AJAX动态载入(实例讲解)
2013/12/11 Javascript
js实现倒计时时钟的示例代码
2013/12/17 Javascript
js 动态为textbox添加下拉框数据源的方法
2014/04/24 Javascript
JQuery中serialize()用法实例分析
2015/02/06 Javascript
JS判断字符串包含的方法
2015/05/05 Javascript
JS组件Form表单验证神器BootstrapValidator
2016/01/26 Javascript
微信小程序 开发之快递查询功能的实现
2017/01/09 Javascript
详解浏览器渲染页面过程
2017/02/09 Javascript
原生JS实现圆环拖拽效果
2017/04/07 Javascript
前端html中jQuery实现对文本的搜索功能并把搜索相关内容显示出来
2017/11/14 jQuery
用vscode开发vue应用的方法步骤
2019/05/06 Javascript
小程序中this.setData的使用和注意事项
2019/08/28 Javascript
js正则匹配多个全部数据问题
2019/12/20 Javascript
JavaScript进阶(三)闭包原理与用法详解
2020/05/09 Javascript
python在windows下实现ping操作并接收返回信息的方法
2015/03/20 Python
浅谈django中的认证与登录
2016/10/31 Python
python实现扫描日志关键字的示例
2018/04/28 Python
Django重置migrations文件的方法步骤
2019/05/01 Python
Python定时任务工具之APScheduler使用方式
2019/07/24 Python
python实现XML解析的方法解析
2019/11/16 Python
利用python读取YUV文件 转RGB 8bit/10bit通用
2019/12/09 Python
pytorch中的自定义反向传播,求导实例
2020/01/06 Python
pytorch之添加BN的实现
2020/01/06 Python
Python变量、数据类型、数据类型转换相关函数用法实例详解
2020/01/09 Python
全球性的在线时尚男装零售商:boohooMAN
2016/12/17 全球购物
Joules官网:女士、男士和儿童服装和鞋类
2018/10/23 全球购物
Hawes & Curtis官网:英国经典品牌
2019/07/27 全球购物
电子专业毕业生自荐信
2014/05/25 职场文书
少年雷锋观后感
2015/06/10 职场文书
浅谈Web Storage API的使用
2021/06/23 Javascript
Nginx内网单机反向代理的实现
2021/11/07 Servers
navicat 连接Ubuntu虚拟机的mysql的操作方法
2022/04/02 MySQL