• HTML5表单验证


     表单验证
         * 验证属性
           * required属性 - 验证是否为空
           * pattern属性 - 匹配正则表达式
           * minlength和maxlength属性 - 验证最小和最大长度
           * min、max和step - 验证最小和最大值
           * validity属性
             * 用法(JS) - element.validity
         * 返回值 - validityState对象
         * validityState对象
           * 该对象提供了一系列的属性(验证状态)
           * 注意
             * H5验证属性与JS逻辑验证的区别
           * JS逻辑验证
             * 性能相对比较低
             * 需要专有的解析器才能解析
           * H5验证属性
             * 性能相对比较高
             * 解析器不需要有切换的过程
         * 浏览器的解析器
           * HTML+CSS的解析 - 解析器
           * JavaScript的解析 - 解析器
         * 验证状态
           * 基础内容
             * 验证状态就是validityState对象的属性
         * 验证状态必须与验证属性配合使用
         * 用于替换之前人为逻辑判断的内容
           * 验证状态
             * valueMissing状态
           * 使用 - 配合required属性使用
           * 返回值 - Boolean值
             * true - 表示值为空(错误)
             * false - 表示值不为空(正确)
         * patternMismatch状态
           * 使用 - 配合pattern属性使用
           * 返回值
             * true - 表示值与正则不匹配(错误)
             * false - 表示值与正则匹配(正确)
         * tooShort状态
           * 使用 - 配合minlength属性使用
           * 返回值
             * true - 表示值的长度小于minlength(错误)
             * false - 表示值的长度大于等于minlength(正确)
         * tooLone状态
           * 使用 - 配合maxlength属性使用
           * 返回值
             * true - 表示值的长度大于maxlength(错误)
             * false - 表示值的长度小于等于maxlength(正确)
           * 注意 - 这种情况很难出现
             * 必须进行逻辑判断 - 逻辑完整性
         * rangeUnderflow状态
           * 使用 - 配合min属性使用
           * 返回值
             * true - 表示值小于min
             * false - 表示值大于等于min
         * rangeOverflow状态
           * 使用 - 配合max属性使用
           * 返回值
             * true - 表示值大于max
             * false - 表示值小于等于max
         * stepMismatch状态
           * 使用 - 配合step属性使用
           * 返回值
             * true - 表示值与step不匹配
             * false - 表示值与step匹配
         * typeMismatch状态
           * 使用 - 配合email、url标签使用
           * 返回值
             * true - 表示值与对应类型不匹配
             * false - 表示值与对应类型匹配
         * valid状态
           * 含义 - 表示值是否正确
           * 返回值
             * true - 表示值正确
             * false - 表示值错误
         * badInput状态(了解)
           * 含义 - 表示值输入有误
         * customError状态
           * 含义 - 是否自定义错误提示信息
           * 使用 - 配合setCustomValidity()方法
         * setCustomValidity()方法 - 慎用
           * 作用 - 用于自定义验证错误提示信息

     1 <!DOCTYPE html>
     2 <html>
     3 <head lang="en">
     4     <meta charset="UTF-8">
     5     <title>验证状态测试</title>
     6 </head>
     7 <body>
     8 <form action="#">
     9     用户名:<input type="text" id="user" required pattern="^[0-9]{6,12}$"/><br/>
    10     密码:<input type="text" id="pwd" minlength="6" maxlength="12"/><br/>
    11     年龄:<input id="age" type="number" min="18" max="50" step="2"/><br/>
    12     email:<input type="email" id="mail"><br/>
    13 
    14     <input type="submit"/>
    15 </form>
    16 <script>
    17     var user = document.getElementById("user");
    18     user.onblur = function(){
    19         var value = this.value;
    20         /*if(value==""||value==null){
    21             //TODO 错误
    22         }*/
    23         if(user.validity.valueMissing){
    24             console.log("用户名不能为空.")
    25         }else if(user.validity.patternMismatch){
    26             console.log("用户名格式错误.");
    27         }
    28     }
    29 
    30     var pwd = document.getElementById("pwd");
    31     pwd.onblur = function(){
    32         var value = pwd.value;
    33         if(pwd.validity.tooShort){
    34             console.log("密码输入太少")
    35         }else if(pwd.validity.tooLong){
    36             console.log("密码输入太多")
    37         }
    38     }
    39 
    40     var age = document.getElementById("age");
    41     age.onblur = function(){
    42         if(age.validity.rangeUnderflow){
    43             console.log("年龄过小.")
    44         }else if(age.validity.rangeOverflow){
    45             console.log("年龄过大.")
    46         }else if(age.validity.stepMismatch){
    47             console.log("年龄不对.")
    48         }
    49     }
    50 
    51     var mail = document.getElementById("mail");
    52     mail.onblur = function(){
    53         if(mail.validity.valid){
    54             console.log("email格式正确")
    55         }else if(mail.validity.typeMismatch){
    56             console.log("email格式错误.")
    57         }
    58     }
    59 </script>
    60 </body>
    61 </html>
    验证状态测试
     1 <!DOCTYPE html>
     2 <html>
     3 <head lang="en">
     4     <meta charset="UTF-8">
     5     <title>验证属性</title>
     6 </head>
     7 <body>
     8     <fieldset>
     9         <legend>验证属性</legend>
    10         <form action="#">
    11             <!--
    12                 TODO required属性
    13                 TODO * 作用 - 验证当前值是否为空
    14                 TODO * 效果 - 表单提交时验证
    15 
    16                 TODO * (了解)返回值 - Boolean
    17                 TODO   * true - 表示不为空
    18                 TODO   * false - 表示为空
    19             -->
    20             用户名:<input type="text" id="user" required/><br/>
    21             <!--
    22                 TODO pattern属性
    23                 TODO * 作用 - 匹配正则表达式
    24                 TODO * 注意 - 不能用于验证是否为空(required)
    25             -->
    26             密码:<input type="text" pattern="^[0-9a-z]{6,8}$"><br/>
    27             <!--
    28                 TODO minlength和maxlength属性
    29                 TODO * 注意
    30                 TODO   * minlength属性
    31                 TODO     * 并不是HTML5的新属性
    32                 TODO     * W3C的规范中
    33                 TODO     * 表单验证属性
    34                 TODO   * maxlength
    35                 TODO     * 输入限制属性
    36             -->
    37             个人主页:<input type="text" id="home" minlength="5" maxlength="8"/><br/>
    38             <!--
    39                 TODO min、max和step属性
    40             -->
    41 
    42             <input type="submit"/>
    43         </form>
    44     </fieldset>
    45     <script>
    46         //TODO 1.为submit按钮绑定onclick事件
    47         /*
    48           TODO 正则表达式
    49           TODO * 内置对象 - RegExp
    50           TODO   * /^[0-9a-z]{6,8}$/
    51           TODO   * new RegExp()
    52          */
    53 
    54         /*
    55            JavaScript内置
    56            * stringoolean
    umber
    ull
    57            * StringBooleanNumberUndefind
    58          */
    59         /*var str1 = "this is string";//string
    60         //字面量或直接量
    61         var str2 = new String();//Object
    62 
    63         var arr1 = [];//Object
    64         var arr2 = new Array();//Object*/
    65 
    66         //TODO 下述哪个选项是错误的?
    67         /*A a = [];//TODO 空数组
    68         B b = {};//TODO 空对象
    69         C c = //;//TODO 空正则表达式
    70         D d = ();//错误*/
    71 
    72         //TODO 自调函数目前至少十几种写法
    73         /*(function(){
    74             /!*
    75               TODO 全局变局部 - 节省全局空间
    76              *!/
    77             var jQuery = {};
    78             //TODO 局部对象升级到全局
    79             window.jQuery = window.$ = jQuery;
    80         })();//语法定义
    81         +function(){}();*/
    82     </script>
    83 </body>
    84 </html>
    属性验证
     1 <!DOCTYPE html>
     2 <html>
     3 <head lang="en">
     4     <meta charset="UTF-8">
     5     <title>验证状态</title>
     6 </head>
     7 <body>
     8     <fieldset>
     9         <legend>验证状态</legend>
    10         <form action="#">
    11             用户名:<input type="text" id="user" required/>
    12 
    13             <input id="submit" type="submit"/>
    14         </form>
    15     </fieldset>
    16     <script>
    17         var submit = document.getElementById("submit");
    18         submit.onclick = function(){
    19             var user = document.getElementById("user");
    20             console.log(user.validity);
    21         }
    22     </script>
    23 </body>
    24 </html>
    验证状态
  • 相关阅读:
    2017.08.07 python爬虫实战之使用代理爬取糗事百科
    2017.08.05 Python网络爬虫实战之获取代理
    2017.08.04 Python网络爬虫之Scrapy爬虫实战二 天气预报的数据存储问题
    2017.08.04 Python网络爬虫之Scrapy爬虫实战二 天气预报
    2017.07.28 Python网络爬虫之爬虫实战 重新梳理------今日影视爬虫(使用Scrapy爬取ajax动态页面)
    2017.07.28 Python网络爬虫之爬虫实战 今日影视2 获取JS加载的数据
    RabbitMQ之工作队列
    pt-online-schema-change和默认值关系
    flex词法解析
    Makefile持续学习二
  • 原文地址:https://www.cnblogs.com/qulb/p/6038867.html
Copyright © 2020-2023  润新知