使用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伸缩布局盒模型Flex布局
Aug 20 HTML / CSS
CSS3实现大小不一的粒子旋转加载动画
Apr 21 HTML / CSS
HTML5+CSS3 诱人的实例:3D立方体旋转动画实例
Dec 30 HTML / CSS
CSS3 :default伪类选择器使用简介
Mar 15 HTML / CSS
css3 矩阵的使用详解
Mar 20 HTML / CSS
详解FireFox下Canvas使用图像合成绘制SVG的Bug
Jul 10 HTML / CSS
HTML5语音识别标签写法附图
Nov 18 HTML / CSS
12个不为大家熟知的HTML5设计小技巧
Jun 02 HTML / CSS
使用Html5中的cavas画一面国旗
Sep 25 HTML / CSS
详解移动端h5页面根据屏幕适配的四种方案
Apr 15 HTML / CSS
canvas绘制图片drawImage使用方法
Sep 15 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编程文件处理类SplFileObject和SplFileInfo用法实例分析
2017/07/22 PHP
PHP保留两位小数的几种方法
2019/07/24 PHP
基于jquery的一个图片hover的插件
2010/04/24 Javascript
JQuery伸缩导航练习示例
2013/11/13 Javascript
jquery 提示信息显示后自动消失的具体实现
2013/12/18 Javascript
基于jQuery实现的扇形定时器附源码下载
2015/10/20 Javascript
在Web项目中引入Jquery插件报错的完美解决方案(图解)
2016/09/19 Javascript
js实现点击按钮弹出上传文件的窗口
2016/12/23 Javascript
node学习记录之搭建web服务器教程
2017/02/16 Javascript
JavaScript中无法通过div.style.left获取值的解决方法
2017/02/19 Javascript
详解Vue监听数据变化原理
2017/03/08 Javascript
JS 中LocalStorage和SessionStorage的使用
2017/08/17 Javascript
详解React Native 屏幕适配(炒鸡简单的方法)
2018/06/11 Javascript
vue中promise的使用及异步请求数据的方法
2018/11/08 Javascript
JavaScript模板引擎应用场景及实现原理详解
2018/12/14 Javascript
Python中return语句用法实例分析
2015/08/04 Python
python 实现删除文件或文件夹实例详解
2016/12/04 Python
Python多层装饰器用法实例分析
2018/02/09 Python
python将秒数转化为时间格式的实例
2018/09/16 Python
python 实现12bit灰度图像映射到8bit显示的方法
2019/07/08 Python
Python 使用matplotlib模块模拟掷骰子
2019/08/08 Python
python实现通过flask和前端进行数据收发
2019/08/22 Python
python中seaborn包常用图形使用详解
2019/11/25 Python
细数nn.BCELoss与nn.CrossEntropyLoss的区别
2020/02/29 Python
django restframework serializer 增加自定义字段操作
2020/07/15 Python
详解CSS的border边框属性及其在CSS3中的新特性
2016/05/10 HTML / CSS
铭万公司.net面试题笔试题
2014/07/20 面试题
vue 中 get / delete 传递数组参数方法
2021/03/23 Vue.js
车辆安全检查制度
2014/01/12 职场文书
《锄禾》教学反思
2014/04/08 职场文书
2014年化验室工作总结
2014/11/21 职场文书
趵突泉导游词
2015/02/03 职场文书
公司年会开场白
2015/06/01 职场文书
运动会跳远广播稿
2015/08/19 职场文书
营销策划分析:怎么策划才能更好销量产品?
2019/09/04 职场文书
详细介绍python操作RabbitMq
2022/04/12 Python