使用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实现3D旋转书本效果
Mar 21 HTML / CSS
css3之UI元素状态伪类选择器实例演示
Aug 11 HTML / CSS
纯css3使用vw和vh实现自适应的方法
Feb 09 HTML / CSS
CSS Houdini实现动态波浪纹效果
Jul 30 HTML / CSS
详解移动端html5页面长按实现高亮全选文本内容的兼容解决方案
Dec 03 HTML / CSS
HTML5实现可缩放时钟代码
Aug 28 HTML / CSS
HTML5 canvas 瀑布流文字效果的示例代码
Jan 31 HTML / CSS
HTML5 3D书本翻页动画的实现示例
Aug 28 HTML / CSS
使用canvas实现雪花飘动效果的示例代码
Mar 30 HTML / CSS
CSS巧用渐变实现高级感背景光动画
Dec 06 HTML / CSS
关于CSS自定义属性与前端页面的主题切换问题
Mar 21 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
用PHPdig打造属于你自己的Google[图文教程]
2007/02/14 PHP
qq登录,新浪微博登录接口申请过程中遇到的问题
2014/07/22 PHP
php站内搜索关键词变亮的实现方法
2014/12/30 PHP
php从字符串创建函数的方法
2015/03/16 PHP
PHP中的session安全吗?
2016/01/22 PHP
PHP小白必须要知道的php基础知识(超实用)
2017/10/10 PHP
PHP使用PDO、mysqli扩展实现与数据库交互操作详解
2019/07/20 PHP
PHP实现统计代码行数小工具
2019/09/19 PHP
jQuery EasyUI API 中文文档 - ProgressBar 进度条
2011/09/29 Javascript
实现web打印的各种方法介绍及实现代码
2013/01/09 Javascript
7个JS基础知识总结
2014/03/05 Javascript
js 获取时间间隔实现代码
2014/05/12 Javascript
jquery validate和jquery form 插件组合实现验证表单后AJAX提交
2015/08/26 Javascript
JQuery自适应窗口大小导航菜单附源码下载
2015/09/01 Javascript
Bootstrap3学习笔记(二)之排版
2016/05/20 Javascript
AngularJS教程 ng-style 指令简单示例
2016/08/03 Javascript
解决前端跨域问题方案汇总
2016/11/20 Javascript
jQuery实现立体式数字滚动条增加效果
2016/12/21 Javascript
使用layui的router来进行传参的实现方法
2019/09/06 Javascript
[01:29]Ti4循环赛第三日精彩回顾
2014/07/13 DOTA
Python快速排序算法实例分析
2017/11/29 Python
Python解析命令行读取参数--argparse模块使用方法
2018/01/23 Python
Python检测网络延迟的代码
2018/05/15 Python
对Python通过pypyodbc访问Access数据库的方法详解
2018/10/27 Python
django celery redis使用具体实践
2019/04/08 Python
Pandas中DataFrame的分组/分割/合并的实现
2019/07/16 Python
Python整数与Numpy数据溢出问题解决
2019/09/11 Python
python访问hdfs的操作
2020/06/06 Python
html2canvas截图空白问题的解决
2020/03/24 HTML / CSS
诚信考试承诺书
2014/03/27 职场文书
国旗下的讲话演讲稿
2014/05/08 职场文书
学校消防安全责任书
2014/07/23 职场文书
银行委托书范本
2014/09/28 职场文书
国庆节主题班会
2015/08/15 职场文书
十大公认最好看的动漫:《咒术回战》在榜,《钢之炼金术师》第一
2022/03/18 日漫
如何使用SQL Server语句创建表
2022/04/12 SQL Server