讲师中心 微信公众号

工具推荐

视频效率加速
updream

一键生成高质量推广成片

Seko
Seko

AI短剧一键生成成片

AniShort
AniShort

AI短剧协同制作平台

立刻MV
立刻MV

低成本歌曲 MV、视频生成

如何使用 JavaScript 实现表单验证并动态切换输入框的 CSS 状态

浅萱君_6758

浅萱君_6758

发布时间:2026-01-21 17:11:01

|

320人浏览过

|

来源于php中文网

原创

如何使用 JavaScript 实现表单验证并动态切换输入框的 CSS 状态

本文详解如何通过 javascript 实现用户名必填校验,并在提交时动态为输入框添加 success/error 样式类,配合 css 控制边框颜色、图标显隐及错误提示显示。

要让表单验证逻辑真正触发并实现你期望的视觉反馈(绿色边框+对勾图标 / 红色边框+叹号图标+错误文字),最关键的前提是:注册按钮必须是 type="submit",而非 type="button"。当前代码中 不会触发表单的 submit 事件,因此 form2.addEventListener("submit", ...) 始终不会执行,整个验证流程被完全绕过。

✅ 正确做法是将按钮改为:

<input type="submit" id="submit" value="REGISTER">

同时建议优化 HTML 结构,使用语义化

<button type="submit" id="submit">REGISTER</button>

此外,还需注意以下几点以确保功能完整可靠:

立即学习“Java免费学习笔记(深入)”;

DeepBI DHTML 页面生成器
DeepBI DHTML 页面生成器

生成可在 deepbi 沙箱 iframe 内运行或作为独立文件运行的交互式 HTML 页面,使用 `window.deepbi` JS SDK 实现数据查询、空间管理、文件浏览及用户操作。当用户提出以下需求时启用该能力: - 创建 KPI 仪表盘、数据表格、文件浏览器、成员列表、管理页面; - 明确要求“转成 dhtml”、“转译成 HTML”、“把 XX 页面转成……”、“控制台页面”、“管理后台”、“DeepBI 页面迁移”; - 提及位于 `apps/console/src/featur

下载

✅ 完整可运行示例(精简整合版)

HTML(index.html)

<section class="formContainer">
  <form class="form" id="form">
    <h1>Student Form</h1>
    <div class="text-box">
      <label for="userName">User Name</label>
      <input type="text" id="userName" name="userName" required>
      <i class="fas fa-circle-check"></i>
      <i class="fas fa-circle-exclamation"></i>
      <small>Please enter a user name</small>
    </div>
    <button type="submit" id="submit">REGISTER</button>
  </form>
</section>

CSS(style.css)

.text-box {
  padding-bottom: 10px;
  position: relative;
}
.text-box input {
  width: 70%;
  display: block;
  margin-left: 60px;
  font-size: 16px;
  margin-top: 5px;
  padding: 10px;
  border-radius: 6px;
  border: 1px solid #ccc;
  transition: border-color 0.2s;
}
.text-box input:focus {
  outline: none;
  border-color: #ee56ee;
}
.text-box.success input {
  border-color: #03650a;
}
.text-box.error input {
  border-color: #cd1404;
}
.text-box i {
  visibility: hidden;
  position: absolute;
  top: 40px;
  right: 90px;
  font-size: 14px;
}
.text-box.success i.fa-circle-check {
  visibility: visible;
  color: #03650a;
}
.text-box.error i.fa-circle-exclamation {
  visibility: visible;
  color: #cd1404;
}
.text-box small {
  color: #cd1404;
  position: absolute;
  left: 0;
  bottom: 0;
  font-size: 12px;
  margin-top: 4px;
}
.text-box.error small {
  visibility: visible;
}
.text-box.success small {
  visibility: hidden;
}
#submit {
  background-color: burlywood;
  color: white;
  border: 1px solid black;
  border-radius: 5px;
  padding: 10px 20px;
  cursor: pointer;
  font-size: 18px;
  margin-left: 320px;
  margin-top: 10px;
}

JavaScript(app.js)

const form = document.getElementById("form");
const userNameInput = document.getElementById("userName");

form.addEventListener("submit", (e) => {
  e.preventDefault(); // 阻止默认提交行为
  validateInputs();
});

function validateInputs() {
  const userNameVal = userNameInput.value.trim();

  if (userNameVal === "") {
    setError(userNameInput, "User name is required");
  } else {
    setSuccess(userNameInput);
  }
}

function setError(element, message) {
  const inputGroup = element.parentElement;
  const errorElement = inputGroup.querySelector("small");
  errorElement.textContent = message;
  inputGroup.classList.add("error");
  inputGroup.classList.remove("success");
}

function setSuccess(element) {
  const inputGroup = element.parentElement;
  const errorElement = inputGroup.querySelector("small");
  errorElement.textContent = "";
  inputGroup.classList.add("success");
  inputGroup.classList.remove("error");
}

⚠️ 注意事项与最佳实践

  • required 属性增强健壮性:为 添加 required 属性,可启用浏览器原生校验(作为兜底),但自定义样式仍需 JS 控制。
  • 避免重复 class 切换:classList.add() 和 classList.remove() 已足够,无需手动判断是否存在再操作。
  • 图标库依赖:确保已引入 Font Awesome(如 ),否则图标不显示。
  • 用户体验优化:可进一步添加 input 实时监听(input 或 blur 事件)实现即时反馈,而非仅依赖提交动作。

通过以上修正,点击 REGISTER 按钮后,系统将准确识别空值状态,动态切换 .text-box 的 success/error 类,从而驱动 CSS 渲染出预期的颜色、图标与提示文案——真正实现“所见即所验”的交互体验。

热门AI工具

更多
PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

讯飞智文

一款面向学习和办公场景的AI文档创作工具,可辅助生成PPT与Word文档,提高资料整理和内容制作效率。

Lovart
Lovart Hot

一款面向视觉设计创作的AI设计平台,可通过智能体和画布工作流辅助制作海报、Logo、网页、PPT及其他视觉内容。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

相关专题

更多
ajax教程
ajax教程

php中文网为大家带来ajax教程合集,Ajax是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,Ajax可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。php中文网还为大家带来ajax的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

3400

2023.06.14

ajax中文乱码解决方法
ajax中文乱码解决方法

ajax中文乱码解决方法有设置请求头部的字符编码、在服务器端设置响应头部的字符编码和使用encodeURIComponent对中文进行编码。本专题为大家提供ajax中文乱码相关的文章、下载、课程内容,供大家免费下载体验。

360

2023.08.31

ajax传递中文乱码怎么办
ajax传递中文乱码怎么办

ajax传递中文乱码的解决办法:1、设置统一的编码方式;2、服务器端编码;3、客户端解码;4、设置HTTP响应头;5、使用JSON格式。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

3233

2023.11.15

ajax网站有哪些
ajax网站有哪些

使用ajax的网站有谷歌、维基百科、脸书、纽约时报、亚马逊、stackoverflow、twitter、hacker news、shopify和basecamp等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1181

2024.09.24

ThinkPHP表单验证与数据安全处理实战
ThinkPHP表单验证与数据安全处理实战

本专题聚焦 ThinkPHP 在表单处理中的验证与安全机制,系统讲解验证器使用、自定义规则、场景验证以及错误提示处理。内容涵盖 XSS 防护、SQL 注入防御、数据过滤与输入校验等关键安全措施。通过实际案例,帮助开发者构建安全可靠的数据处理流程。

281

2026.03.30

scripterror怎么解决
scripterror怎么解决

scripterror的解决办法有检查语法、文件路径、检查网络连接、浏览器兼容性、使用try-catch语句、使用开发者工具进行调试、更新浏览器和JavaScript库或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1069

2023.10.18

500error怎么解决
500error怎么解决

500error的解决办法有检查服务器日志、检查代码、检查服务器配置、更新软件版本、重新启动服务、调试代码和寻求帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

3440

2023.10.25

class在c语言中的意思
class在c语言中的意思

在C语言中,"class" 是一个关键字,用于定义一个类。想了解更多class的相关内容,可以阅读本专题下面的文章。

4536

2024.01.03

Postman身份认证怎么配置
Postman身份认证怎么配置

本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。

60

2026.11.06

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn