𝗙𝗼𝗿𝗺 𝗩𝗮𝗹𝗶𝗱𝗮𝘁𝗶𝗼𝗻 𝗶𝗻 𝟮𝟬𝟮𝟲: 𝗦𝘁𝗼𝗽 𝗨𝘀𝗶𝗻𝗴 𝗟𝗶𝗯𝗿𝗮𝗿𝗶𝗲𝘀 𝗨𝗻𝗻𝗲𝗰𝗲𝘀𝘀𝗮𝗿𝗶𝗹𝘆 2026 年的表单验证:停止不必要的库的使用

在 2026 年,你不再需要沉重的 JavaScript 库来验证表单。

上个月我发布了一个结账表单,完全没有使用任何验证库。仅通过原生 HTML 和 30 行 JavaScript,它就处理了必填字段、邮箱格式和密码长度。

在运行 npm install 之前,请使用这六个原生属性来解决大部分问题:

required: 防止文本、select 和 checkbox 的空提交。 • type: 使用 type="email"type="url" 来捕捉基础的格式错误。 • minlengthmaxlength: 无需自定义逻辑即可强制执行字符限制。 • minmaxstep: 控制数字和日期的范围。 • pattern: 使用正则表达式来强制执行特定格式(如邮政编码)。 • inputmodeautocomplete: 通过显示正确的键盘或填充已知数据来减少错误。

如果原生提示信息过于笼统,请使用 Constraint Validation API。

每个 input 都有一个 validity 对象。你可以检查 valueMissingtypeMismatch 等属性来编写有用的错误提示。使用 setCustomValidity 来显示你自定义的文本。

请记住在 input 事件中清除你的自定义消息。否则,即使用户修复了错误,该字段仍会一直处于错误状态。

在样式方面,停止使用 JavaScript 来追踪字段是否被“触碰”(touched)。

CSS :user-invalid 伪类现在可以处理这个问题。它仅在用户与字段交互后才应用样式。将其与 :has() 选择器结合使用,即可自动显示错误文本。这可以省去数十行不必要的代码。

你到底什么时候才应该使用库?

仅在以下两种特定情况下才考虑使用库:

  1. 跨字段验证:当一个字段依赖于另一个字段时,例如“确认密码”或复杂的条件逻辑。
  2. 异步验证:当你需要检查数据库时,例如“该用户名是否已被占用?”

如果你的表单只需要单字段规则,请坚持使用原生功能。代码越少,Bug 越少。从浏览器原生功能开始,只有当浏览器达到极限时,再添加库。

Source: https://dev.to/raxxostudios/form-validation-in-2026-6-native-constraints-before-you-reach-for-a-library-3474

Optional learning community: https://t.me/GyaanSetuAi