JavaScript操作表单核心是获取输入并验证,需用DOM选取元素、监听input/blur/submite事件,结合trim、正则、checkValidity等方法实现非空、格式、范围等校验,并注意preventDefault和焦点管理。
JavaScript 操作表单的核心是获取用户输入并做即时或提交前的验证。关键在于通过 DOM 正确选取表单元素、监听用户行为(如输入、失焦、提交),再用逻辑判断数据有效性。
最常用方式是用 document.getElementById() 或 form.elements 获取表单控件,再读取其 value 属性:
input.value 或 textarea.value
checked === true 的那个checkbox.checked 判断是否勾选,多个可收集成数组select.value 获取选中 option 的 value,或用 select.selectedIndex 找索引不必等提交才校验。常用事件有:
event.preventDefault() 阻止默认提交)例如邮箱格式验证可这样写:
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),再判断是否为有限数字及区间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 导致页面刷新。动手试几次,模式就自然形成了。