第 70 篇:前端表单全解|原生 JS 表单校验、复杂联动、错误处理、防重复提交
前言表单是前端业务占比最高的模块新增、编辑、搜索弹窗全部离不开表单。很多同学只会简单判断非空复杂联动、防重复提交、多字段联动、异步校验、错误聚焦处理经常踩坑。 本篇全部基于原生 JSjQuery不依赖任何 UI 组件库。一、表单校验思路基础校验非空、长度、手机号、邮箱、数字范围联动校验A 输入框的值影响 B 输入框是否显示、是否必填异步校验输入用户名请求后端判断账号是否已存在提交前整体校验校验失败定位到第一个错误输入框常用正则工具js运行const Regs { phone:/^1[3-9]\d{9}$/, email:/^\w([.-]\w)*\w([.-]\w)*\.\w{2,}$/ }二、完整表单校验示例html预览div div label用户名/label input typetext idusername span classerror/span /div div label手机号/label input typetext idphone span classerror/span /div button idsubmitBtn提交/button /divjs运行//校验函数 function validateForm(){ let pass true const username $(#username).val().trim() const phone $(#phone).val().trim() $(.error).text() if(!username){ $(.error).eq(0).text(用户名不能为空) pass false $(#username).focus() } if(!Regs.phone.test(phone)){ $(.error).eq(1).text(手机号格式错误) if(pass) $(#phone).focus() pass false } return pass } //防重复提交增加锁标记 let submitLock false $(#submitBtn).on(click,async function(){ if(submitLock) return if(!validateForm()) return submitLock true $(this).prop(disabled,true) try{ const params { username:$(#username).val().trim(), phone:$(#phone).val().trim() } const res await Request.post(/api/save,params) Component.toast(保存成功) }catch(err){ Component.toast(保存失败) }finally{ submitLock false $(this).prop(disabled,false) } })三、表单高频业务场景防重复提交点击按钮加锁接口请求完成解锁防止连续点击多次发请求。联动显隐选择下拉框的值控制其他表单项显示隐藏同时动态修改是否必填。异步校验失去焦点 blur 的时候调用接口校验不要每输入一个字符就请求接口配合防抖。js运行$(#username).on(blur,Utils.debounce(async function(){ const val $(this).val().trim() if(!val) return const res await Request.get(/api/checkUser,{name:val}) if(res.code!200){ $(.error).eq(0).text(账号已存在) } },400))编辑回填后端返回数据循环赋值给表单注意 null、undefined 空值处理。四、表单踩坑总结input 获取值一定要 trim ()去除首尾空格。异步校验不要写在 submit 里面提交的时候只做同步校验。一定要做提交锁避免短时间多次提交。校验失败自动 focus 定位到第一个错误输入提升用户体验。面试简答Q表单防重复提交有哪些方案js 加锁按钮置灰接口增加 token 令牌后端接口做幂等处理。小结中后台系统 70% 业务都是表单把表单的各种边界处理做好业务开发能力会直接上一个台阶。

相关新闻

终极跨平台文本编辑器Notepad--:国产替代的完整解决方案

终极跨平台文本编辑器Notepad--:国产替代的完整解决方案

终极跨平台文本编辑器Notepad--:国产替代的完整解决方案 【免费下载链接】notepad-- 一个支持windows/linux/mac的文本编辑器,目标是做中国人自己的编辑器,来自中国。 项目地址: https://gitcode.com/GitHub_Trending/no/notepad-- 在…

2026/8/7 13:53:36 阅读更多 →
Linphone Android 6.0:企业级开源VoIP通信架构深度解析

Linphone Android 6.0:企业级开源VoIP通信架构深度解析

Linphone Android 6.0:企业级开源VoIP通信架构深度解析 【免费下载链接】linphone-android Linphone.org mirror for linphone-android (https://gitlab.linphone.org/BC/public/linphone-android) 项目地址: https://gitcode.com/gh_mirrors/li/linphone-android…

2026/8/7 13:53:35 阅读更多 →
CocosCreator游戏开发框架XForge:工程化与架构设计实战指南

CocosCreator游戏开发框架XForge:工程化与架构设计实战指南

1. 项目概述:为什么我们需要一个游戏开发框架?如果你用 CocosCreator 做过几个项目,尤其是团队项目,你大概率经历过这样的场景:UI 界面越来越多,脚本依赖关系乱成一团麻,一个按钮的点击事件可能…

2026/8/7 13:53:35 阅读更多 →

最新新闻

PCB和电路板有什么区别哪家好?

PCB和电路板有什么区别哪家好?

在电子采购、硬件设计、项目对接场景中,大量从业者习惯性将 PCB 与电路板等同混用,报价阶段、交付验收阶段因此产生沟通偏差,甚至引发供需双方纠纷。想要理清二者优劣对比,首要前提是厘清概念从属逻辑:电路板是广义总称…

2026/8/7 14:47:06 阅读更多 →
GSE高级宏编辑器:3步掌握魔兽世界智能技能序列,彻底解放双手

GSE高级宏编辑器:3步掌握魔兽世界智能技能序列,彻底解放双手

GSE高级宏编辑器:3步掌握魔兽世界智能技能序列,彻底解放双手 【免费下载链接】GSE-Advanced-Macro-Compiler GSE is an alternative advanced macro editor and engine for World of Warcraft. 项目地址: https://gitcode.com/gh_mirrors/gs/GSE-Adva…

2026/8/7 14:47:06 阅读更多 →
如何解决G-Helper的启动异常问题:完整故障排除指南

如何解决G-Helper的启动异常问题:完整故障排除指南

如何解决G-Helper的启动异常问题:完整故障排除指南 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook, Zenbook, Exper…

2026/8/7 14:47:06 阅读更多 →
ESP32-Camera传感器选型终极指南:15种摄像头深度解析与实战决策框架

ESP32-Camera传感器选型终极指南:15种摄像头深度解析与实战决策框架

ESP32-Camera传感器选型终极指南:15种摄像头深度解析与实战决策框架 【免费下载链接】esp32-camera 项目地址: https://gitcode.com/gh_mirrors/es/esp32-camera ESP32-Camera作为ESP32平台的官方摄像头驱动库,支持15种主流图像传感器&#xff0…

2026/8/7 14:47:06 阅读更多 →
Docker 镜像构建的底层原理:从 Layer 到 Cache 的深度剖析

Docker 镜像构建的底层原理:从 Layer 到 Cache 的深度剖析

系列导读 你现在看到的是《Docker 高级实践与镜像优化:从入门到精通的工程化指南》的第 1/10 篇,当前这篇会重点解决:通过剖析镜像分层和缓存机制,让读者理解优化背后的原理,而非盲目套用技巧。 上一篇回顾:这是系列首篇,我们先把整体背景和问题边界搭起来。 下一篇预…

2026/8/7 14:47:06 阅读更多 →
Chrome控制台粘贴警告解析:安全机制、触发条件与解决方案

Chrome控制台粘贴警告解析:安全机制、触发条件与解决方案

1. 问题现象与本质:一个被误解的安全警告 如果你是一名前端开发者,或者经常和浏览器打交道,那么你大概率在 Chrome 开发者工具的控制台里见过这个红色的警告:“Warning: Don’t paste code into the DevTools Console that you do…

2026/8/7 14:46:05 阅读更多 →

日新闻

为什么scrcpy成为Android投屏的终极解决方案:完整实战指南

为什么scrcpy成为Android投屏的终极解决方案:完整实战指南

为什么scrcpy成为Android投屏的终极解决方案:完整实战指南 【免费下载链接】scrcpy Display and control your Android device 项目地址: https://gitcode.com/GitHub_Trending/sc/scrcpy 想要将Android手机屏幕完美投射到电脑上,享受大屏操作的自…

2026/8/7 0:00:19 阅读更多 →
如何在5分钟内掌握Tom Select:打造现代化表单选择器的终极指南

如何在5分钟内掌握Tom Select:打造现代化表单选择器的终极指南

如何在5分钟内掌握Tom Select:打造现代化表单选择器的终极指南 【免费下载链接】tom-select Tom Select is a lightweight (~16kb gzipped) hybrid of a textbox and select box. Forked from selectize.js to provide a framework agnostic autocomplete widget wi…

2026/8/7 0:00:19 阅读更多 →
5分钟快速上手:NSZ压缩工具终极指南,轻松管理Switch游戏文件

5分钟快速上手:NSZ压缩工具终极指南,轻松管理Switch游戏文件

5分钟快速上手:NSZ压缩工具终极指南,轻松管理Switch游戏文件 【免费下载链接】nsz NSZ - Homebrew compatible NSP/XCI compressor/decompressor 项目地址: https://gitcode.com/gh_mirrors/ns/nsz 你是否在为Nintendo Switch游戏文件占用大量存储…

2026/8/7 0:00:19 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/6 22:02:27 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/6 22:02:27 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/6 22:02:27 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/5 23:28:39 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/6 22:02:28 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/5 23:46:51 阅读更多 →