热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

HTML5中的验证功能

HTML5针对表单方面也做了一些完善,新添加了一些验证数据的功能,新添加了一些标签属性。有了这些验证功能,就可以不用JavaScript进行验证,哪怕是JavaScript被禁用了也

 HTML5针对表单方面也做了一些完善,新添加了一些验证数据的功能,新添加了一些标签属性。有了这些验证功能,就可以不用Javascript进行验证,哪怕是Javascript被禁用了也可以毫无压力的验证表单了。开发人员不用Javascript,浏览器会根据标记中的规则执行验证,然后显示适当的错误信息。这些人性化的功能在支持HTML5的浏览器中才能有效,支持的浏览器有Opera 10+、Safari 5+、Chrome和Firefox 4+。
  HTML5新添加的表单功能有:其他输入类型、输入模式、数值范围、必填字段、禁用验证和检测有效性。下面我们将对这几个功能进行详细展开介绍。

  1、其他输入类型

  说到输入类型,大家很快的就会想到input标签。只有input标签才可以规定不同的类型。HTML5恰恰就是在input中的type属性添加了一些新的属性值。这些新的属性值不仅可以反映数据类型的信息,还可以提供一些默认的验证功能。其中,”email”和”url”是两个得到支持最多的类型,各浏览器也为它们增加了定制的验证机制。新添加的类型如下

  email : 电子邮箱文本框,跟普通的没什么区别,当输入不是邮箱的时候,验证通不过。移动端的键盘会有变化
  tel : 电话号码
  url : 网页的URL
  search : 搜索引擎。chrome下输入文字后,会多出一个关闭的X
  range : 特定范围内的数值选择器,min、max、step( 步数 )
  number : 只能包含数字的输入框
  color : 颜色选择器
  datetime : 显示完整日期
  datetime-local : 显示完整日期,不含时区
  time : 显示时间,不含时区
  date : 显示日期
  week : 显示周
  month : 显示月

  小例子HTML代码

[html] view plain copy
print?

  2、输入模式

  HTML5不仅新添加了一些新的输入类型,还添加了新的属性——patten属性。Patten属性的值是一个正则表达式,是用于匹配文本框中的值。在写正则的时候要注意,开头和结尾不用加^和$符号(假定已经有了)。这两个符号表示输入的值必须是从头到尾与模式匹配。小例子如下

  HTML代码

[html] view plain copy
print?

  Chrome预览效果

HTML5实战与剖析之表单那些事儿

  3、数值范围

  除了”email”和”url”,HTML5还定义了另外几个输入元素。这几个元素都要求填写某种基于数字的值。但是浏览器对这些新添加的值兼容性并不是很好。所以对这些数值类型的输入元素,可以指定min属性(最小的可能值)、max属性(最大的可能值)和step属性(从min到max的两个刻度之间的差值)。小例子如下

  HTML代码

[html] view plain copy
print?

  Javascript代码

[Javascript] view plain copy
print?
var oInput=document.getElementById(“range”);
oInput.stepUp() //每次加1
oInput.stepUp(5) //每次加5
oInput.stepDown() //每次减1
oInput.stepDown(10) //每次减10

  4、必填字段

  在表单字段中指定required属性,即可提示用户这是为必填项不能为空。这个属性适用于input标签,textarea标签,select标签(Opera 12+支持)。在Javascript中通过对于的required属性,可以检测表单是否为必填项。
  对于空着的必填字段,不同浏览器的处理方式不同。Opera 11和Firefox 4会阻止表单提交病在相应字段下面弹出帮助框,Chrome(9之前)和Safari(5之前)则什么都不做也不阻止表单提交。小例子如下

  HTML代码

[html] view plain copy
print?

  Javascript代码

[Javascript] view plain copy
print?
//检验是否支持必填属性
//支持的为true ,不支持的为false
var is = “required” in document.createElement(“input”);

  5、禁用验证

  通过在form标签中添加novalidate属性,可以让表单不自行验证。Javascript中可以使用novalidate获取,若存在则是true,反之则是false。如果提交按钮有多个,为了指定点击某一个提交按钮不必验证表单,可以在相应的按钮上添加formnovalidate属性。也可用Javascript添加禁用验证的属性。小例子如下

  HTML代码

[Javascript] view plain copy
print?

  6、检测有效性,及新添属性和方法

  在Javascript中使用checkValidity()方法可以检测表单中的某个字段是否有效。所有表单字段都有这个方法,如果字段的值是有效的,这份方法会返回true,否则则是false。与checkValidity()方法相比,validity属性可以告诉你很多东西。

  valueMissing : 输入值为空时
  typeMismatch : 控件值与预期类型不匹配
  patternMismatch : 输入值不满足pattern正则
  tooLong : 超过maxLength最大限制
  rangeUnderflow : 验证的range最小值
  rangeOverflow:验证的range最大值
  stepMismatch: 验证range 的当前值 是否符合min、max及step的规则
  customError: 不符合自定义验证,是否设置setCustomValidity(); 自定义验证
  placeholder : 输入框提示信息
  autocomplete : 是否保存用户输入值。默认为on,关闭提示选择off
  autofocus : 指定表单获取输入焦点
  list和datalist : 为输入框构造一个选择列表。list值为datalist标签的id
  Formaction : 在submit里定义提交地址

  小例子Javascript代码

[Javascript] view plain copy
print?
if(input.validity && !input.validity.valid){
if(input.validity.valueMissing){
alert(“不能为空”)
}else if(input.validity.typeMismatch){
alert(“控件值与预期类型不匹配”);
}
}


推荐阅读
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • 本文介绍了在处理不规则数据时如何使用Python自动提取文本中的时间日期,包括使用dateutil.parser模块统一日期字符串格式和使用datefinder模块提取日期。同时,还介绍了一段使用正则表达式的代码,可以支持中文日期和一些特殊的时间识别,例如'2012年12月12日'、'3小时前'、'在2012/12/13哈哈'等。 ... [详细]
  • 本文整理了315道Python基础题目及答案,帮助读者检验学习成果。文章介绍了学习Python的途径、Python与其他编程语言的对比、解释型和编译型编程语言的简述、Python解释器的种类和特点、位和字节的关系、以及至少5个PEP8规范。对于想要检验自己学习成果的读者,这些题目将是一个不错的选择。请注意,答案在视频中,本文不提供答案。 ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • Ihavethefollowingonhtml我在html上有以下内容<html><head><scriptsrc..3003_Tes ... [详细]
  • 本文介绍了深入浅出Linux设备驱动编程的重要性,以及两种加载和删除Linux内核模块的方法。通过一个内核模块的例子,展示了模块的编译和加载过程,并讨论了模块对内核大小的控制。深入理解Linux设备驱动编程对于开发者来说非常重要。 ... [详细]
  • 深度学习中的Vision Transformer (ViT)详解
    本文详细介绍了深度学习中的Vision Transformer (ViT)方法。首先介绍了相关工作和ViT的基本原理,包括图像块嵌入、可学习的嵌入、位置嵌入和Transformer编码器等。接着讨论了ViT的张量维度变化、归纳偏置与混合架构、微调及更高分辨率等方面。最后给出了实验结果和相关代码的链接。本文的研究表明,对于CV任务,直接应用纯Transformer架构于图像块序列是可行的,无需依赖于卷积网络。 ... [详细]
  • NotSupportedException无法将类型“System.DateTime”强制转换为类型“System.Object”
    本文介绍了在使用LINQ to Entities时出现的NotSupportedException异常,该异常是由于无法将类型“System.DateTime”强制转换为类型“System.Object”所导致的。同时还介绍了相关的错误信息和解决方法。 ... [详细]
  • 小程序wxs中的时间格式化以及格式化时间和date时间互转
    本文介绍了在小程序wxs中进行时间格式化操作的问题,并提供了解决方法。同时还介绍了格式化时间和date时间的互相转换的方法。 ... [详细]
  • Android日历提醒软件开源项目分享及使用教程
    本文介绍了一款名为Android日历提醒软件的开源项目,作者分享了该项目的代码和使用教程,并提供了GitHub项目地址。文章详细介绍了该软件的主界面风格、日程信息的分类查看功能,以及添加日程提醒和查看详情的界面。同时,作者还提醒了读者在使用过程中可能遇到的Android6.0权限问题,并提供了解决方法。 ... [详细]
  • C语言自带的快排和二分查找
    Author🚹:CofCaiEmail✉️:cai.dongjunnexuslink.cnQQ😙:1664866311personalPage&#x ... [详细]
  • python oj刷题网站_中小学计算机竞赛去哪里刷题?橙旭园OJ系统上线啦!
    原标题:中小学计算机竞赛去哪里刷题?橙旭园OJ系统上线啦!相信许多人在学习完编程之后都会茫然,感觉自己无所不能࿰ ... [详细]
  • PRML读书会第十四章 Combining Models(committees,Boosting,AdaBoost,决策树,条件混合模型)...
    主讲人网神(新浪微博:豆角茄子麻酱凉面)网神(66707180)18:57:18大家好,今天我们讲一下第14章combiningmodel ... [详细]
author-avatar
lexlee1979
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有