JavaScript操作表单核心是获取输入并验证,需用DOM选取元素、监听input/blur/submite事件,结合trim、正则、checkValidity等方法实现非空、格式、范围等校验,并注意preventDefault和焦点管理。

JavaScript 操作表单的核心是获取用户输入并做即时或提交前的验证。关键在于通过 DOM 正确选取表单元素、监听用户行为(如输入、失焦、提交),再用逻辑判断数据有效性。
获取表单元素和用户输入值
最常用方式是用 document.getElementById() 或 form.elements 获取表单控件,再读取其 value 属性:
-
文本框、密码框、文本域:直接访问
input.value或textarea.value -
单选按钮(radio):需遍历同 name 的所有 radio,检查
checked === true的那个 -
复选框(checkbox):用
checkbox.checked判断是否勾选,多个可收集成数组 -
下拉选择(select):用
select.value获取选中 option 的 value,或用select.selectedIndex找索引
监听用户输入并实时验证
不必等提交才校验。常用事件有:
- input:每次输入(包括粘贴、删除)都触发,适合实时反馈(如密码强度提示)
- blur:失去焦点时触发,适合“输完再校验”,减少干扰
-
submit:表单提交时触发,用于最终把关(记得用
event.preventDefault()阻止默认提交)
例如邮箱格式验证可这样写:
立即学习“Java免费学习笔记(深入)”;
emailInput.addEventListener('blur', () => {
const email = emailInput.value.trim();
const isValid = /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email);
if (!isValid) showError(emailInput, '请输入有效的邮箱');
});
常见验证逻辑与技巧
基础验证靠条件判断,复杂规则可封装函数复用:
-
非空检查:用
value.trim() !== '',避免只输空格被当成有效 -
长度限制:对比
value.length和最大/最小长度 -
数字范围:先转成
Number(value),再判断是否为有限数字及区间 - 确认密码一致:比较两个 input 的 value 是否完全相等(注意 trim)
-
自定义错误提示:用
element.setCustomValidity()+reportValidity()可触发原生气泡提示
提交前统一校验与友好反馈
在 form 的 submit 事件里遍历所有必填字段,逐个验证。任一失败就阻止提交,并聚焦到第一个出错项:
form.addEventListener('submit', (e) => {
e.preventDefault();
const inputs = form.querySelectorAll('input[required], select[required]');
let isValid = true;
inputs.forEach(input => {
if (!input.checkValidity()) {
isValid = false;
input.focus();
return false; // 退出循环
}
});
if (isValid) form.submit(); // 或发 Ajax
});
配合 CSS 的 :valid / :invalid 伪类,还能实现视觉状态自动更新。
基本上就这些。不复杂但容易忽略细节——比如没 trim 空格、没处理 radio 的多选逻辑、或忘记 preventDefault 导致页面刷新。动手试几次,模式就自然形成了。











