2023年6月21日发(作者:)
H5⾃带的表单验证表单验证是⼀套系统,它为终端⽤户检测⽆效的数据并标记这些错误,是⼀种⽤户体验的优化,让web应⽤更快的抛出错误,但它仍不能取代服务器端的验证,重要数据还要要依赖于服务器端的验证,因为前端验证是可以绕过的。html5验证的⼏种类型:1、valueMissing⽬的:确保表单控件中的值已填写。⽤法:在表单控件中将required特性设置为true。⽰例:详细说明:如果表单控件设置了required特性,那么在⽤户填写或者通过代码调⽤⽅式填值之前,控件会⼀直处于⽆效状态。例如,空的⽂本输⼊框⽆法通过必填检查,除⾮在其中输⼊任意⽂本。输⼊值为空时,valueMissing会返回true。2、typeMismatch⽬的:保证控件值与预期类型相匹配(如numbe、email、URL等).⽤法:指定表单控件的type特性值。⽰例:详细说明:特殊的表单控件类型不只是⽤来定制⼿机键盘, 如果浏览器能够识别出来表单控件中的输⼊不符合对应的类型规则,⽐如email地址中没有@符号,或者number型控件的输⼊值不是有效的数字,那么浏览器就会把这个控件标记出来以提⽰类型不匹配。⽆论哪种出错情况,typeMismatch将返回true。3、patternMismatch⽬的:根据表单控件上设置的格式规则验证输⼊是否为有效格式。⽤法:在表单控件上设置pattern特性,井赋予适当的匹配规则。⽰例:详细说明:pattern特性向开发⼈员提供了⼀种强⼤⽽灵活的⽅式来为表单的控件值设定正则表达式验证机制。当为控件设置了pattern特性 后,只要输⼊控件的值不符合模式规则,patternMismatch就会返回true值。从引导⽤户和技术参考两⽅⾯考虑,你应该在包含pattern特性的表 单控件中设置title特性以说明规则的作⽤。4、tooLong⽬的:避免输⼊值包含过多字符。⽤法:在表单控件上设置maxLength特性。⽰例详细说明:如果输⼊值的长度超过maxLength, tooLong特性会返回true。虽然表单控件通常会在⽤户输⼊时,限制最⼤长度,但在有些情况下,如通过程序设置,还是会超出最⼤值。5、rangeUnderflow⽬的:限制数值型控件的最⼩值。⽤法:为表单控件设置min特性,并赋予允许的最⼩值。⽰例:详细说明:在需要做数值范围检查的表单控件中,数值很可能会暂时低于设置的下限。此时,ValidityState的rangeUnderflow特性将返回true。6、rangeOverflow⽬的:限制数值型控件的最⼤值。⽤法:为表单控件设置max特性,并赋予允许的最⼤值。⽰例:详细说明:与rangeUnderflow类似,如果⼀个表单控件的值⽐max更⼤,特性将返回true。7、stepMismatch⽬的:确保输⼊值符合min、max及step即设置。⽤法:为表单控件设置step特性,指定数值的增量。⽰例:详细说明:此约束条件⽤来保证数值符合min、max和step的要求。换句话说,当前值必须是最⼩值与step特性值的倍数之和。例如,范围从0到100,step特性值为5,此时就不允许出现17,否则stepMismatch返回true值。8、customError⽬的:处理应⽤代码明确设置及计算产⽣的错误。⽤法:调⽤setCustomValidity(message)将表单控件置于customError状态。⽰例:tomValidity("Password values do not match.");详细说明:浏览器内置的验证机制不适⽤时,需要显⽰⾃定义验证错误信息。当输⼊值不符合语义规则时,应⽤程序代码应设置这些⾃定义验证消息。⾃定义验证消息的典型⽤例是验证控件中的值是否⼀致。例如,密码和密码确认两个输⼈框的值不匹配。只要定制了验证消息,控件就会处于⽆效状态,并且customError返回true。要清除错误,只需在控件上调⽤setCustomValidity("")即可。 实例:CSS代码.myform select:required,.myform input:required,.myform textarea:required { background: #fff url(../img/red_) no-repeat 99% center;}.myform select:required:valid,.myform input:required:valid,.myform textarea:required:valid { background: #fff url(../img/) no-repeat 99% center; box-shadow: 0 0 5px #5cd053; border-color: #28921f;}.myform select:focus:invalid,.myform input:focus:invalid,.myform textarea:focus:invalid { background: #fff url(../img/) no-repeat 99% center; box-shadow: 0 0 5px #d45252; border-color: #b03535}HTML代码