全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页

原生表单验证专题测试

20 题 45 分钟 难度:

考察知识点

  • min和max属性:数值范围约束、日期时间范围限制
  • pattern正则验证:自定义验证规则、正则表达式匹配、title提示
  • validity对象:验证状态属性、valid综合判断、具体错误类型检测
  • required属性:必填验证、valueMissing状态
  • 表单验证方法:checkValidity、reportValidity、setCustomValidity
  • 验证事件:invalid事件处理、表单提交验证
1
单选题

以下关于 HTML5 中 minmax 属性的说法,正确的是?

A

min 和 max 属性只能用于 type="number" 的 input 元素

B

min 和 max 属性可以用于 type="range" 的 input 元素

C

设置 max="100" 后,用户无法输入大于 100 的值

D

min 属性的默认值始终是 0

2
单选题

对于以下代码,用户输入 "test@" 后提交表单,会发生什么?

HTML
<form>
  <input type="email" pattern="^[a-z]+@[a-z]+\.[a-z]+$">
  <button type="submit">提交</button>
</form>
A

表单正常提交,因为 email 类型会自动补全

B

表单提交失败,显示 pattern 验证错误

C

表单提交失败,显示 email 类型验证错误

D

表单提交失败,可能显示 email 验证错误或 pattern 验证错误,取决于浏览器实现

3
单选题

以下关于 HTML5 required 属性的说法,错误的是?

A

required 属性是一个布尔属性,可以不设置值

B

对于复选框,required 表示必须勾选

C

对于单选按钮组,required 表示必须选择其中一个

D

设置 required 后,空字符串一定会触发验证失败

4
单选题

以下哪个 HTML5 input type 会自动验证输入内容是否为有效的 URL 格式?

A

<input type="link">

B

<input type="url">

C

<input type="href">

D

<input type="web">

5
单选题

关于 HTML5 的 minlengthmaxlength 属性,以下说法正确的是?

A

maxlength 会阻止用户输入超过指定长度的字符

B

minlength 会阻止用户输入少于指定长度的字符

C

maxlength 设置为 10 时,用户最多可以输入 10 个字符

D

minlength 设置为 5 时,用户无法在输入框中输入少于 5 个字符

6
单选题

以下代码的执行结果是什么?

HTML
<input type="text" id="username" required>
<script>
const input = document.getElementById('username');

input.setCustomValidity('用户名已存在');
input.value = '';  // 清空值

console.log(input.validity.valueMissing, input.validity.customError, input.validity.valid);
</script>
A

true, true, true

B

true, true, false

C

false, true, false

D

false, false, true

7
单选题

以下 CSS 选择器中,哪个可以实现在用户开始输入后才显示验证失败样式?

A

input:invalid

B

input:invalid:focus

C

input:invalid:not(:placeholder-shown)

D

input:required:invalid

8
判断题

<input type="number" min="10" max="50" step="5"> 允许用户输入的合法值包括 10、15、20、25 等直到 50。

A

B

9
判断题

可以通过 input.validity.valid = true 强制将输入框设为验证通过状态。

A

B

10
判断题

validity.badInput 属性在用户在 number 类型输入框中输入非数字字符时返回 true。

A

B

11
判断题

调用 input.checkValidity() 方法时,如果验证失败,会触发该输入框的 invalid 事件。

A

B

12
判断题

invalid 事件处理函数中调用 e.preventDefault() 可以阻止浏览器显示默认的验证错误提示气泡。

A

B

13
判断题

对于一组具有相同 name 属性的单选按钮,只需要在其中一个按钮上设置 required 属性,整组就会被标记为必选。

A

B

14
判断题

<input type="email"> 会严格验证邮箱格式,只接受符合 RFC 5322 标准的邮箱地址。

A

B

15
多选题

关于 HTML5 的 pattern 属性,以下说法正确的有?

A

pattern 属性的值是一个正则表达式,不需要添加前后斜杠

B

pattern 属性适用于 text、password、email、tel、url 等文本类型 input

C

pattern 会自动添加 ^ 和 $ 锚点

D

可以使用 title 属性为 pattern 验证失败提供提示信息

16
多选题

HTML5 的 validity 对象包含以下哪些属性?

A

valueMissing - 表示必填字段为空

B

typeMismatch - 表示值不符合 email、url 等类型要求

C

patternMismatch - 表示值不匹配 pattern 正则

D

tooLong - 表示值超过了 maxlength

17
多选题

关于 setCustomValidity() 方法,以下说法正确的有?

A

setCustomValidity('') 可以清除自定义错误消息

B

设置自定义错误后,validity.customError 属性变为 true

C

setCustomValidity 设置的错误会影响 validity.valid 的值

D

同一输入框只能设置一次自定义错误,再次调用会覆盖之前的

18
多选题

关于 HTML5 的 novalidate 属性,以下说法正确的有?

A

novalidate 是表单元素的属性,不是 input 元素的属性

B

设置 novalidate 后,表单提交时不会进行任何原生验证

C

设置 novalidate 后,元素的 validity 对象仍然存在

D

设置 novalidate 后,调用 checkValidity() 仍然会返回实际的验证结果

19
填空题

完成以下代码,检查输入框是否通过所有验证:

HTML
<input type="number" id="age" min="0" max="150" required>
<script>
const input = document.getElementById('age');
input.value = 200;

// 检查是否通过所有验证
if (input.validity.!!1_valid!!) {
  console.log('验证通过');
} else if (input.validity.!!2_rangeOverflow!!) {
  console.log('值超过最大限制');
}
</script>
20
填空题

完成以下代码,实现提交前静默验证,验证失败时再显示错误:

HTML
<form id="myForm">
  <input type="email" required>
  <button type="submit">提交</button>
</form>
<script>
const form = document.getElementById('myForm');

form.addEventListener('submit', (e) => {
  // 先静默检查验证状态
  if (!form.!!1_checkValidity!!()) {
    e.preventDefault();
    // 显示错误提示给用户
    form.!!2_reportValidity!!();
  }
});
</script>
← 上一个试卷 HTML高级技能认证测试
下一个试卷 → 多媒体与嵌入内容专题测试

📝 发现内容有误?点击此处直接编辑

想参加完整模拟考试?
小程序提供计时考试、自动评分和详细解析

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库