新增类型
H5新增了一些不同类型的字段:
<input type="email">
<input type="url">
<input type="number">
<input type="range">
-
<input type="datetime">
等等,这些还没有得到浏览器的广泛支持,因此了解即可。
基本约束能力
表单的验证约束除了type类型支持的内置验证规则外,还有自定义验证规则,分分类:
-
必填:只要出现required属性,就表示该字段必须有值,否则无法提交表单。该属性适用于<input>、<textarea>、<select>
<input type="text" required>
不是在所有浏览器中都支持这个属性,可以用特性检测来确定是否支持:
let requiredSuppoted = 'required' in document.createElement('input');
min、max、step属性适用于type值为number、range、datetime的字段,为输入值提供了约束。
pattern属性:H5新增属性,该属性的值是一个正则表达式,用户输入的文本必须与之匹配。
关于检测字段有效性的方法和属性
方法:checkValidity()
字段和表单都可以调用该方法,以检测字段的值是否有效,如果有效返回true,否则返回false。
属性:validity
这个属性的值是一个对象,包含了字段为什么无效或有效的信息:
- customError
- patternMismatch
- rangeOverflow
- rangeUnderflow
- stepMismatch
- tooLong
- typeMismatch
- valueMissing
- valid ------ 如果以上所有属性的值都是false,则这个属性就是true
利用validity的属性可以自定义用户输入无效时的提示信息。
禁止验证
如果不想验证表单就提交,可以在form上添加一个novalidate
属性
<form method="" action="" novalidate>
...
</form>
如果一个表单有多个提交按钮(有这样的需求吗?)可以指定某个按钮提交时不做验证,给该按钮添加一个formnovalidate
属性即可:
<input type="submit" id="sub1" formnovalidate value="不验证提交">
<input type="submit" id="sub2" value="提交">