• html5 form-Validity验证函数


    h5 为表单新增了很多类型,及属性。

    根据这些新增的类型及属性 h5也为我们提供了验证这些数据的js函数,这些验证表单的函数都存在了ValidityState对象中,接下来让我们一起来了解一下这些函数的用法:

    ValidityState对象

    ValidityState对象是通过validity 属性获取的,该对象有8个属性,分别针对8个方面的错误验证,属性值均为布尔值。

    1.valueMissing属性

    必填的表单元素的值为空。

    如果表单元素设置了required特性,则为必填项。如果必填项的值为空,就无法通过表单验证,valueMissing属性会返回true,否则返回false。

    <input id="inp1" type="text" value="foo" required/>
    <input id="inp2" type="text" value="" required/>
    <script type="text/javascript">
        document.getElementById('inp1').validity.valueMissing; //false
        document.getElementById('inp2').validity.valueMissing; //true
    </script>

    2.typeMismatch属性

    输入值与type类型不匹配。

    HTML 5新增的表单类型如email、number、url等,都包含一个原始的类型验证。如果用户输入的内容与表单类型不符合,则typeMismatch属性将返回true,否则返回false。

    <input id="inp1" type="url" value="http://foo.com" />
    <input id="inp2" type="url" value="foo" />
    <input id="inp3" type="email" value="foo@foo.com" />
    <input id="inp2" type="email" value="bar" />
    <script type="text/javascript">
        document.getElementById('inp1').validity.typeMismatch; //false
        document.getElementById('inp2').validity.typeMismatch; //true
        document.getElementById('inp3').validity.typeMismatch; //false
        document.getElementById('inp2').validity.typeMismatch; //true
    </script>

    3.patternMismatch属性

    输入值与pattern特性的正则不匹配。

    表单元素可通过pattern特性设置正则表达式的验证模式。如果输入的内容不符合验证模式的规则,则patternMismatch属性将返回true,否则返回false。

    <input id="inp1" type="text" value="1234" />
    <input id="inp2" type="text" value="" pattern="[a-z]{2}"/>
    <script type="text/javascript">
       document.getElementById('inp1').validity.patternMismatch;  //false
       document.getElementById('inp2').validity.patternMismatch;  //true
    </script>

    4.tooLong属性

    输入的内容超过了表单元素的maxLength 特性限定的字符长度。

    表单元素可使用maxLength特性设置输入内容的最大长度。虽然在输入的时候会限制表单内容的长度,但在某种情况下,如通过程序设置,还是会超出最大长度限制。如果输入的内容超过了最大长度限制,则tooLong属性返回true,否则返回false。

    <!--tooLong: true 标识是否节点的 value 长度超过了 maxlength 属性值。所有的浏览器都会阻止用户输入超过最大长度值的内容。-->
    <input id="inp1" type="text" value="A" maxlength="1" />
    <input id="inp2" type="text" value="AB" maxlength="1" />
    <script type="text/javascript">
        document.getElementById('inp1').validity.tooLong; //false
        document.getElementById('inp2').validity.tooLong; //true in Opera, false in 其他支持的浏览器.
    </script>

    5.rangeUnderflow属性

    输入的值小于min特性的值。

    一般用于填写数值的表单元素,都可能会使用min特性设置数值范围的最小值。如果输入的数值小于最小值,则rangeUnderflow属性返回true,否则返回false。

    <input id="inp1" type="number" value="3" min="2"/>
    <input id="inp2" type="number" value="1" min="2"/>
    <script type="text/javascript">
        document.getElementById('inp1').validity.rangeUnderflow; //false
        document.getElementById('inp2').validity.rangeUnderflow; //true
    </script>

    6.rangeOverflow属性

    输入的值大于max特性的值。

    一般用于填写数值的表单元素,也可能会使用max特性设置数值范围的最大值。如果输入的数值大于最大值,则rangeOverflow属性返回true,否则返回false。

    <input id="inp1" type="number" value="1" max="2"/>
    <input id="inp2" type="number" value="3" max="2"/>
    <script type="text/javascript">
        document.getElementById('inp1').validity.rangeOverflow; //false
        document.getElementById('inp2').validity.rangeOverflow; //true
    </script>

    7.stepMismatch属性

    输入的值不符合step特性所推算出的规则。

    用于填写数值的表单元素,可能需要同时设置min、max和step特性,这就限制了输入的值必须是最小值与step特性值的倍数之和。如范围从2到6,step特性值为2,因为合法值为该范围内的偶数,其他数值均无法通过验证。如果输入值不符合要求,则stepMismatch属性返回true,否则返回false。

    <input id="inp1" type="number" value="4" min="2" max="6" step="2"/>
    <input id="inp2" type="number" value="3" min="2" max="6" step="2"/>
    <script type="text/javascript">
        document.getElementById('inp1').validity.stepMismatch; //false
        document.getElementById('inp2').validity.stepMismatch; //true
    </script>

    8.customError属性

    使用自定义的验证错误提示信息。

    有时候,不太适合使用浏览器内置的验证错误提示信息,需要自己定义。当输入值不符合语义规则时,会提示自定义的错误提示信息。

    通常使用setCustomValidity()方法自定义错误提示信息:setCustomValidity(message)会把错误提示信息自定义为message,此时customError属性值为true;setCustomValidity("")会清除自定义的错误信息,此时customError属性值为false。

    <input id="inp1" type="text" />
    <input id="inp2" type="text" />
    <script type="text/javascript">
        document.getElementById('inp1').validity.customError; //false
        document.getElementById('inp2').setCustomValidity('Invalid');
        document.getElementById('inp2').validity.customError; //true
    </script>

    checkValidity

    返回的也是布尔值,通过验证返回真,否则返回假。

    此方法作用在form表单上,验证的准确度还有待考量。

    <form id="profileform" name="profileform">
        <input type="text" id="firstname" required>
        <input type="button" id="testbutton" value="Test">
    </form>
    <script>
    var Form = document.getElementById('profileform'),
        submitB =  document.getElementById('testbutton');
    
    submitB.onclick=function(){
      alert(Form.checkValidity());
    }

    </script>

    setCustomValidity

    自定义错误提示信息。用法如上customError方法中的实例代码。

  • 相关阅读:
    Excel向合并的单元格里面粘贴数据 scholarfor
    CCPC2021哈尔滨
    JS时间加减(亲自操作有效)
    基于DSP_CPLD_aP8942A_LM1791的语音控制
    数字证书编码ASN.1
    密码引擎2OpenEulerOpenSSL测试
    网络对抗选做
    Proxifier 分析
    微信小程序 检测设置是否支持人脸识别startSoterAuthentication的大坑
    微信小程序 实现人脸识别功能
  • 原文地址:https://www.cnblogs.com/langli/p/3446641.html
Copyright © 2020-2023  润新知