本文详解如何使用原生 javascript(es6)实现多步骤表单中按字段集(fieldset)粒度进行独立验证,避免默认表单提交行为触发全表单校验,并通过设置 `type="button"` 阻止非提交按钮触发验证。
在构建多步骤表单时,一个常见误区是:即使只调用 checkValidity() 验证部分输入元素,整个 。根本原因在于:HTML 中未显式声明 type 的
只需为所有非提交用途的按钮(如“Continue”、“Go back”)添加 type="button" 属性,即可彻底隔离验证范围:
同理,“Go back” 按钮也需添加 type="button",而最终提交按钮保留 type="submit" 即可。
你当前的 validateFieldset() 函数逻辑正确(筛选 .active fieldset 内的 input 并逐个调用 checkValidity()),但可进一步提升健壮性与可读性:
function validateFieldset() {
const activeFieldset = document.querySelector('fieldset.active');
if (!activeFieldset) return false;
const inputs = activeFieldset.querySelectorAll('input');
return Array.from(inputs).every(input => input.checkValidity());
}
通过这一微小但关键的属性修正,配合清晰的 DOM 状态驱动验证逻辑,即可实现真正按步骤解耦的表单验证体验——专业、轻量、零依赖。