0Pricing
JavaScript Academy · 课时

约束验证 API

使用内置的有效性检查功能。

约束验证 API 是 CoddyKit 上的免费 JavaScript Academy 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 JavaScript Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 JavaScript Academy 课程共包含 4 节课。

内置验证

HTML 表单字段支持 required、min、max、pattern 和 type="email" 等属性。约束验证 API 让 JavaScript 能够检查并控制这种内置验证。

checkValidity

checkValidity 返回布尔值,并在每个验证失败的控件上触发 invalid 事件,但不会显示浏览器的气泡提示。

const email = document.querySelector("#email");
console.log(email.checkValidity());

reportValidity

reportValidity 类似于 checkValidity,但还会为无效字段显示浏览器的验证消息界面。

if (!form.reportValidity()) {
  console.log("show built-in errors");
}

validity 对象

每个控件都有一个 validity 对象,其中包含描述具体问题的布尔标志。

console.log(email.validity.valueMissing);  // empty required
console.log(email.validity.typeMismatch);  // wrong format
console.log(email.validity.tooShort);

validity.valid

只有字段通过所有约束时,validity.valid 才为 true;它概括了其他标志的结果。

if (email.validity.valid) {
  console.log("ok");
}

validationMessage

validationMessage 保存浏览器针对当前错误将要显示的本地化消息。

console.log(email.validationMessage);

setCustomValidity

setCustomValidity 会使用您提供的消息将字段标记为无效。非空字符串表示无效,空字符串则会清除该状态。

function checkMatch() {
  if (pass.value !== confirm.value) {
    confirm.setCustomValidity("Passwords must match");
  } else {
    confirm.setCustomValidity("");
  }
}

始终清除自定义错误

如果设置了自定义消息,字段有效后必须使用空字符串将其清除,否则该字段将永远保持无效。

confirm.addEventListener("input", () => {
  confirm.setCustomValidity("");
  checkMatch();
});

invalid 事件

监听 invalid 事件,即可在验证失败时运行自定义逻辑,例如为字段添加样式。

email.addEventListener("invalid", () => {
  email.classList.add("error");
});

禁用原生气泡提示

为表单添加 novalidate,即可抑制原生弹窗,同时继续使用 API 来显示您自己的消息。

form.setAttribute("novalidate", "");
form.addEventListener("submit", (e) => {
  if (!form.checkValidity()) e.preventDefault();
});

使用 :valid 和 :invalid 设置样式

CSS 伪类 :valid 和 :invalid 会根据字段的验证状态自动设置样式。

快速检查

自定义验证规则。

回顾

约束验证 API 与 HTML 约束属性配合使用。使用 checkValidity/reportValidity 来测试错误(并可选择是否显示错误),检查 validity 标志和 validationMessage,并使用 setCustomValidity 添加自定义规则(使用空字符串清除)。invalid 事件以及 :valid/:invalid CSS 有助于设置样式。

常见问题解答

「约束验证 API」课时是免费的吗?

是的 — 「约束验证 API」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 JavaScript Academy 课程的其余内容,请升级到 CoddyKit PRO。 JavaScript Academy 课程共包含 4 节课。

「约束验证 API」这节课中我会学到什么?

使用内置的有效性检查功能。 你通过在浏览器中直接运行的动手代码来练习 JavaScript Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 JavaScript Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 JavaScript Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。

「约束验证 API」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 JavaScript Academy 课中编写并运行代码吗?

能。每节 JavaScript Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 读取输入值
  2. submit 事件
  3. 客户端验证
  4. 约束验证 API
← 返回 JavaScript Academy