使用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动画效果之animation的常用样式
Mar 09 HTML / CSS
CSS3的transition和animation的用法实例介绍
Aug 20 HTML / CSS
IE8下CSS3选择器nth-child() 不兼容问题的解决方法
Nov 16 HTML / CSS
CSS3中animation实现流光按钮效果
Dec 21 HTML / CSS
html5声频audio和视频video等新特性详细说明
Dec 26 HTML / CSS
html5 canvas-2.用canvas制作一个猜字母的小游戏
Jan 07 HTML / CSS
HTML5 Canvas——用路径描画线条实例介绍
Jun 09 HTML / CSS
HTML5样式控制示例代码
Nov 27 HTML / CSS
html5+css3气泡组件的实现
Nov 21 HTML / CSS
HTML5 Canvas之测试浏览器是否支持Canvas的方法
Jan 01 HTML / CSS
多视角3D可旋转的HTML5 Logo动画
Mar 02 HTML / CSS
Html5原生拖拽相关事件简介以及基础实现
Nov 19 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实现与ASP Banner组件相似的类
2006/10/09 PHP
PHP高级OOP技术演示
2009/08/27 PHP
DOM基础及php读取xml内容操作的方法
2015/01/23 PHP
php中preg_match的isU代表什么意思
2015/10/01 PHP
php精确的统计在线人数的方法
2015/10/21 PHP
php根据地址获取百度地图经纬度的实例方法
2019/09/03 PHP
如何在PHP中读写文件
2020/09/07 PHP
cloudgamer出品ImageZoom 图片放大效果
2010/04/01 Javascript
关于event.cancelBubble和event.stopPropagation()的区别介绍
2011/12/11 Javascript
jquery分页插件AmSetPager(自写)
2013/04/15 Javascript
Chrome扩展页面动态绑定JS事件提示错误
2014/02/11 Javascript
原生js编写设为首页兼容ie、火狐和谷歌
2014/06/05 Javascript
Javascript动态创建表格及删除行列的方法
2015/05/15 Javascript
基于JavaScript代码实现随机漂浮图片广告
2016/01/05 Javascript
jquery中的常见问题及快速解决方法小结
2016/06/14 Javascript
EasyUI创建对话框的两种方式
2016/08/23 Javascript
Javascript下拉刷新的简单实现
2017/02/14 Javascript
解决Vue2.0 watch对象属性变化监听不到的问题
2018/09/11 Javascript
JS实现点击下拉列表文本框中出现对应的网址,点击跳转按钮实现跳转
2019/11/25 Javascript
微信小程序国际化探索实现(附源码地址)
2020/05/20 Javascript
[07:52]2014DOTA2 TI逗比武士游V社解说背后的故事
2014/07/10 DOTA
[07:09]DOTA2-DPC中国联赛 正赛 Ehome vs Elephant 选手采访
2021/03/11 DOTA
Python函数式编程
2017/07/20 Python
完美解决Python 2.7不能正常使用pip install的问题
2018/06/12 Python
Python web如何在IIS发布应用过程解析
2020/05/27 Python
class类在python中获取金融数据的实例方法
2020/12/10 Python
html5之Canvas路径绘图、坐标变换应用实例
2012/12/26 HTML / CSS
澳大利亚吉他在线:Artist Guitars
2017/03/30 全球购物
社区党务公开实施方案
2014/03/18 职场文书
工伤赔偿协议书
2014/04/15 职场文书
离婚协议书怎么写
2014/09/12 职场文书
会计试用期自我评价
2014/09/19 职场文书
党员群众路线个人整改措施思想汇报
2014/10/12 职场文书
离职感谢信怎么写
2015/01/22 职场文书
php 获取音视频时长,PHP 利用getid3 获取音频文件时长等数据
2021/04/01 PHP
Python Matplotlib绘制等高线图与渐变色扇形图
2022/04/14 Python