novalidate属性在form标签上存在即禁用全部原生验证(如required、type="email"、min/max等),不弹提示、不拦截提交;仅作用于当前form,不影响其他表单;需配合JavaScript手动校验,且不损害语义与可访问性。

在 form 标签上添加 novalidate 属性,就能完全禁用浏览器对表单的原生验证(比如 required、type="email"、min/max 等触发的提示)。
novalidate 的基本用法
它是一个布尔属性,只需写上属性名即可生效,无需赋值:
<form novalidate> <input type="email" required> <button type="submit">提交</button> </form>
此时即使邮箱格式错误或输入为空,点击提交也不会弹出浏览器默认提示(如“请填写此字段”或“请输入有效的电子邮件地址”)。
novalidate 只作用于当前 form
该属性只影响它所在的 form 元素及其内部的表单控件,不影响页面中其他表单。多个表单可分别控制:
生成可在 deepbi 沙箱 iframe 内运行或作为独立文件运行的交互式 HTML 页面,使用 `window.deepbi` JS SDK 实现数据查询、空间管理、文件浏览及用户操作。当用户提出以下需求时启用该能力: - 创建 KPI 仪表盘、数据表格、文件浏览器、成员列表、管理页面; - 明确要求“转成 dhtml”、“转译成 HTML”、“把 XX 页面转成……”、“控制台页面”、“管理后台”、“DeepBI 页面迁移”; - 提及位于 `apps/console/src/featur
立即学习“前端免费学习笔记(深入)”;
- 第一个表单需要自定义校验 → 加
novalidate - 第二个表单想保留原生提示 → 不加该属性
和 JavaScript 校验配合使用更常见
禁用原生校验后,通常要自己用 JS 实现校验逻辑。例如:
<form novalidate id="myForm">
<input type="text" id="username" required>
<button type="submit">注册</button>
</form>
<script>
document.getElementById('myForm').addEventListener('submit', function(e) {
e.preventDefault(); // 阻止默认提交
const input = document.getElementById('username');
if (!input.value.trim()) {
alert('用户名不能为空');
return;
}
// 自定义提交逻辑...
});
</script>
注意:novalidate 不影响 required 等属性的语义和可访问性
即使加了 novalidate,required、aria-required 等仍会被屏幕阅读器识别,HTML 语义保持不变。视觉和辅助技术用户仍能感知必填状态,只是浏览器不主动拦截提交了。


















