使用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 相关文章推荐
CSS3美化表单控件全集
Jun 29 HTML / CSS
基于css3仿造window7的开始菜单
Jun 17 HTML / CSS
CSS3制作缩略图的详细过程
Jul 08 HTML / CSS
CSS3按钮鼠标悬浮实现光圈效果源码
Sep 11 HTML / CSS
浅谈CSS3 box-sizing 属性 有趣的盒模型
Apr 02 HTML / CSS
css3中less实现文字长阴影(long shadow)
Apr 24 HTML / CSS
HTML5的结构和语义(5):交互
Oct 17 HTML / CSS
HTML5 预加载让页面得以快速呈现
Aug 13 HTML / CSS
高清屏下canvas重置尺寸引发的问题的解决
Oct 14 HTML / CSS
HTML文本属性&amp;颜色控制属性的实现
Dec 17 HTML / CSS
div与span之间的区别与使用介绍
Dec 06 HTML / CSS
前端使用svg图片改色实现示例
Jul 23 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
谏山创故乡大分县日田市水坝将设立《进击的巨人》立艾伦、三笠以及阿尔敏的铜像!
2020/03/06 日漫
开启CURL扩展,让服务器支持PHP curl函数(远程采集)
2011/03/19 PHP
PHP APC缓存配置、使用详解
2014/03/06 PHP
set_exception_handler函数在ThinkPHP中的用法
2014/10/31 PHP
php中数据库连接方式pdo和mysqli对比分析
2015/02/25 PHP
PHP自定义函数判断是否为Get、Post及Ajax提交的方法
2017/07/27 PHP
PHP memcache在微信公众平台的应用方法示例
2017/09/13 PHP
PHP微信开发之微信录音临时转永久存储
2018/01/26 PHP
TP5(thinkPHP5框架)基于bootstrap实现的单图上传插件用法示例
2019/05/29 PHP
一款js和css代码压缩工具[附JAVA环境配置方法]
2010/04/16 Javascript
jQuery的链式调用浅析
2010/12/03 Javascript
利用json获取字符出现次数的代码
2012/03/22 Javascript
jQuery动画效果animate和scrollTop结合使用实例
2014/04/02 Javascript
JavaScript eval() 函数介绍及应用示例
2014/07/29 Javascript
基于javascript实现浏览器滚动条快到底部时自动加载数据
2015/11/30 Javascript
简单讲解AngularJS的Routing路由的定义与使用
2016/03/05 Javascript
Angularjs实现多个页面共享数据的方式
2016/03/29 Javascript
关于jQuery库冲突的完美解决办法
2017/05/20 jQuery
JQuery Ajax 异步操作之动态添加节点功能
2017/05/24 jQuery
VUE element-ui 写个复用Table组件的示例代码
2017/11/18 Javascript
微信小程序中使用ECharts 异步加载数据的方法
2018/06/27 Javascript
浅析JavaScript异步代码优化
2019/03/18 Javascript
Python中如何获取类属性的列表
2016/12/26 Python
python 除法保留两位小数点的方法
2018/07/16 Python
Python实战购物车项目的实现参考
2019/02/20 Python
Python进程间通信Queue消息队列用法分析
2019/05/22 Python
python3 map函数和filter函数详解
2019/08/26 Python
Win10 安装PyCharm2019.1.1(图文教程)
2019/09/29 Python
Python 日期的转换及计算的具体使用详解
2020/01/16 Python
python实现一个简单RPC框架的示例
2020/10/28 Python
Ubuntu配置Pytorch on Graph (PoG)环境过程图解
2020/11/19 Python
新闻记者个人求职的自我评价
2013/11/28 职场文书
物价局领导班子四风问题整改措施
2014/10/26 职场文书
教师辞职书范文
2015/02/26 职场文书
国王的演讲观后感
2015/06/03 职场文书
Ajax异步刷新功能及简单案例
2021/11/20 Javascript