登录注册界面需3秒内明确“填什么、点哪、错在哪”:表单用包裹,input须有正确name和type;前后端校验分离;错误提示绑定具体输入框;触摸目标≥44px,视觉动线清晰。
登录注册界面不需要堆砌动画或复杂布局,核心是让用户 3 秒内看懂“我要填什么”“点哪里提交”“出错了在哪改”。下面从真实开发中高频踩坑的几个点展开。
表单结构必须用 包裹,且每个 都要有明确的 name 和 type
很多初学者直接用
模拟表单,结果无法触发浏览器自动填充、密码管理器失效,甚至移动端软键盘不弹对应类型(比如邮箱输入框没弹出 @ 符号)。前后端校验必须分离:前端用
错误提示必须绑定到具体
name 值要和后端接收字段一致(如 name="email"),type 要准确(type="email"、type="password"、type="tel")。
常见错误:
-
type="text"写死所有输入框,导致密码明文可见、邮箱无校验提示 -
name用中文或空格(如name="用户邮箱"),后端收不到字段 - 忘记给
加type,点击后页面刷新但表单不提交
前后端校验必须分离:前端用 required + pattern 做基础拦截,后端必须重验
前端校验只为提升体验,不能当安全防线。比如邮箱格式用 pattern="^[^\s@]+@[^\s@]+\.[^\s@]+$" 可即时提示,但正则再严也挡不住绕过 JS 的请求。后端收到 email 字段后,仍需做 DNS 检查、长度限制、黑名单域名过滤等。
关键细节:
-
required属性让浏览器原生标红并阻止空提交,比 JS 判断更可靠 - 密码两次输入,不要只靠 JS 对比 —— 提交时后端必须单独验证
password和password_confirmation是否一致 - 注册页的“用户名”若要求唯一,前端只能提示“可能已被占用”,最终以接口返回
409 Conflict为准
错误提示必须绑定到具体 ,避免只在顶部甩一句“请检查信息”
用户填错邮箱格式,焦点应该落在邮箱输入框,旁边显示“请输入有效的邮箱地址”,而不是跳到页面顶部看一行红色文字。现代做法是监听 input 事件 + setCustomValidity(),或用 :invalid CSS 伪类配合 提示。