使用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 相关文章推荐
深入研究HTML5实现图片压缩上传功能
Mar 25 HTML / CSS
html5的画布canvas——画出简单的矩形、三角形实例代码
Jun 09 HTML / CSS
html5基础教程常用技巧整理
Aug 20 HTML / CSS
让IE下支持Html5的placeholder属性的插件
Sep 02 HTML / CSS
Html5元素及基本语法详解
Aug 02 HTML / CSS
a标签下载链接的简单实现
Sep 13 HTML / CSS
H5新属性audio音频和video视频的控制详解(推荐)
Dec 09 HTML / CSS
HTML5微信播放全屏问题的解决方法
Mar 09 HTML / CSS
Canvas引入跨域的图片导致toDataURL()报错的问题的解决
Sep 19 HTML / CSS
html svg生成环形进度条的实现方法
Sep 23 HTML / CSS
CSS3实现360度循环旋转功能
Feb 12 HTML / CSS
CSS中使用grid布局实现一套模板多种布局
Jul 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
自己动手,丰衣足食 - 短波框形天线制作
2021/03/01 无线电
php adodb连接带密码access数据库实例,测试成功
2008/05/14 PHP
php读取文件内容的三种可行方法示例介绍
2014/02/08 PHP
php把session写入数据库示例
2014/02/26 PHP
优化WordPress的Google字体以加速国内服务器上的运行
2015/11/24 PHP
jquery制作select列表双向选择示例代码
2014/09/02 Javascript
JavaScript操作Cookie方法实例分析
2015/05/27 Javascript
JS html时钟制作代码分享
2017/03/03 Javascript
jQuery中Chosen三级联动功能实例代码
2017/03/07 Javascript
MvcPager分页控件 适用于Bootstrap
2017/06/03 Javascript
layer弹出子iframe层父子页面传值的实现方法
2018/11/22 Javascript
js实现黑白div块画空心的图形
2018/12/13 Javascript
JavaScript静态作用域和动态作用域实例详解
2019/06/17 Javascript
webpack中的模式(mode)使用详解
2020/02/20 Javascript
解决vue项目中某一页面不想引用公共组件app.vue的问题
2020/08/14 Javascript
python文件和目录操作方法大全(含实例)
2014/03/12 Python
python实现无证书加密解密实例
2014/10/27 Python
解决python ogr shp字段写入中文乱码的问题
2018/12/31 Python
python绘制地震散点图
2019/06/18 Python
对Django的restful用法详解(自带的增删改查)
2019/08/28 Python
使用Python打造一款间谍程序的流程分析
2020/02/21 Python
如何查看Django ORM执行的SQL语句的实现
2020/04/20 Python
python os模块在系统管理中的应用
2020/06/22 Python
Python3爬虫带上cookie的实例代码
2020/07/28 Python
美国专注于健康商品的网站:eVitamins
2017/01/23 全球购物
澳大利亚在线生活方式商店:Mytopia
2018/07/08 全球购物
数组越界问题
2015/10/21 面试题
继电保护工岗位职责
2014/01/05 职场文书
购房意向书范本
2014/04/01 职场文书
舞蹈兴趣小组活动总结
2014/07/07 职场文书
个人剖析材料范文
2014/09/30 职场文书
2015年护士节活动总结
2015/02/10 职场文书
2015年资料员工作总结
2015/04/25 职场文书
幼儿园圣诞节活动总结
2015/05/06 职场文书
上班迟到检讨书
2015/05/06 职场文书
解读Vue组件注册方式
2021/05/15 Vue.js