数据验证
确保正确的用户输入
典型的验证任务是:
- 用户是否已填写所有必需的字段?
- 用户是否已输入有效的日期?
- 用户是否在数字字段中输入了文本?
服务器端验证是由 web 服务器执行的,在输入被送往服务器之后。
客户端验证是由 web 浏览器执行的,在输入被送往 web 服务器之前。
HTML 约束验证
HTML 输入属性,CSS 伪选择器,DOM 属性和方法
HTML5 引入的验证概念——约束验证(constraint validation)
约束验证 HTML 输入属性
表单元素,主要指 input标签 的 属性
属性 | 描述 | 补充笔记 |
---|---|---|
type | 规定 input 元素的类型 | |
value | 规定输入字段的初始值 | value= "值" |
max 或 min | 规定 input 元素的最大或小值 | max = "Number" input:number |
readonly | 规定输入字段为只读(不能修改) | readonly |
disabled | 规定 input 元素被禁用 不可用,不可点击,不会被提交 |
disabled |
required | 规定输入字段需要某个元素 | required |
autofocus | 页面加载时自动获得焦点 | autofocus |
autocomplete | 当自动完成开启,浏览器会基于用户之前的输入值自动填写值 | autocomplete="on" autocomplete="off" form input:text、search、url、tel、email、password、datepickers、range 以及 color。 |
size | 规定input的尺寸(以字符计) | size="正整数" 默认为20 input:text 不会限制用户输入的多少 |
maxlength | 规定输入字段允许的最大长度 | 限制用户输入的多少 不会提供反馈(手写JS代码提醒用户) |
pattern | 规定 input 元素的值模式 | |
form | input所属的一个或多个表单 | form="formId1" |
formaction | ||
formenctype | ||
formmethod | ||
formnovalidate | ||
formtarget | ||
height 和 width | ||
list | ||
multiple | ||
pattern (regexp) | ||
placeholder | ||
step |
详解 readonly 和 disabled
约束验证 CSS 伪选择器
选择器 | 描述 |
---|---|
:disabled | 选择设置了 "disabled" 属性的 input 元素 |
:invalid | 选择带有无效值的 input 元素 |
:optional | 选择未设置 "required" 属性的 input 元素 |
:required | 选择设置了 "required" 属性的 input 元素 |
:valid | 选择带有有效值的 input 元素 |
约束验证 DOM 属性 和 方法
方法
属性 | 描述 |
---|---|
checkValidity() | 返回 true,如果 input 元素包含有效数据 |
setCustomValidity() | 设置 input 元素的 validationMessage 属性 |
属性
属性 | 描述 |
---|---|
validity | 包含与 input 元素的合法性相关的布尔属性。 |
validationMessage | 包含当 validity 为 false 时浏览器显示的消息。 |
willValidate | 指示是否验证 input 元素。 |
validity属性包含的一系列属性
属性 | 描述 |
---|---|
customError | 设置为 true,如果设置自定义的合法性消息。 |
patternMismatch | 设置为 true,如果元素值不匹配其 pattern 属性。 |
rangeOverflow | 设置为 true,如果元素值大约其 max 属性。 |
rangeUnderflow | 设置为 true,如果元素值小于其 min 属性。 |
stepMismatch | 当字段拥有 step 属性,且输入的 value 值不符合设定的间隔值时,该属性值为 true。 |
tooLong | 设置为 true,如果元素值超过了其 maxLength 属性。 |
typeMismatch | 当字段的 type 是 email 或者 url 但输入的值不是正确的类型时,属性值为 true。 |
valueMissing | 设置为 true,如果元素(包含 required)没有值。 |
valid | 设置为 true,如果元素值是有效的。 |