基于 jQuery 实现灵活可配置的输入框验证功能

在 Web 表单开发中,输入框验证是保障数据准确性和安全性的关键环节。无论是用户注册、信息提交还是数据录入场景,都需要对用户输入内容进行合法性检查。本文将介绍如何使用 HTML、CSS 和 jQuery 构建一个可灵活配置的输入框验证系统,轻松应对不同类型的验证需求。

一、功能概述与应用场景

该输入框验证系统支持以下核心功能:

  • 多类型验证:可对用户名、电话、密码等不同字段设置独立的验证规则,如长度限制、格式匹配等。
  • 实时反馈:用户输入时实时检查,输入不符合要求时立即显示错误提示。
  • 提交前验证:在表单提交时自动校验所有字段,确保数据完整合法。
    适用于用户注册表单、订单填写、信息修改等各类需要输入数据校验的业务场景。

效果图:

二、HTML 结构搭建

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>输入框验证</title><style>/* 样式代码将在下文CSS部分详细说明 */</style><script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
</head><body><div class="form-container"><h2>输入框验证</h2><div class="form-group"><label for="username">用户名:</label><input type="text" id="username" autocomplete="off"><div class="error-message" id="usernameError"></div></div><div class="form-group"><label for="tel">电话:</label><input type="text" id="tel"><div class="error-message" id="telError"></div></div><div class="form-group"><label for="password">密码:</label><input type="password" id="password"><div class="error-message" id="passwordError"></div></div><div class="form-group"><label for="address">地址:</label><input type="text" id="address"><div class="error-message" id="addressError"></div></div><div class="form-group"><label for="industry">行业:</label><input type="text" id="industry"><div class="error-message" id="industryError"></div></div><div class="form-group"><label for="scol">学校:</label><input type="text" id="scol"><div class="error-message" id="scolError"></div></div><button id="submitButton">提交</button></div><script>// JavaScript实现代码将在下文JavaScript部分详细说明</script>
</body></html>

HTML 代码构建了表单的基础结构:

  • 外层div(类名form-container)作为表单容器,提供统一的样式和布局。
  • 每个form-group包裹一个输入字段,包含label标签、input输入框和用于显示错误信息的div(类名error-message)。
  • submitButton按钮用于触发表单提交和整体验证逻辑。

三、CSS 样式设计

.form-container {background-color: #fff;padding: 20px;border-radius: 8px;box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
}.form-group {margin-bottom: 15px;height: 60px;
}.form-group label {display: block;margin-bottom: 5px;
}.form-group input {width: 100%;padding: 8px;box-sizing: border-box;border: 1px solid #ccc;border-radius: 4px;
}.form-group input.error {border-color: #ff0000;
}.error-message {color: #ff0000;font-size: 12px;
}button {width: 100%;padding: 10px;background-color: #007bff;color: #fff;border: none;border-radius: 4px;cursor: pointer;margin-top: 10px;
}button:hover {background-color: #0056b3;
}

CSS 代码为表单赋予了美观且实用的样式:

  • form-container设置了白色背景、圆角边框和阴影效果,增强视觉吸引力。
  • form-group定义了每个输入组的间距和高度,确保布局整齐。
  • input元素设置默认样式,当添加error类时(验证失败),边框变为红色以提示用户。
  • error-message定义错误提示文字的颜色和字体大小,button设置提交按钮的背景色、交互效果等。

四、jQuery 功能实现

$(function () {const $form = $('.form-container');const $inputs = $form.find('input[type="text"], input[type="password"]');const inputs = $inputs.map(function () {const $input = $(this);const id = $input.attr('id');const $error = $(`#${id}Error`);const label = $form.find(`label[for="${id}"]`).text().replace(':', '');let validationRule;let errorMessage;switch (id) {case 'username':validationRule = (value) => $.trim(value).length >= 3;errorMessage = `${label}长度不能少于3个字符`;break;case 'tel':validationRule = (value) => /^\d{11}$/.test($.trim(value));errorMessage = `${label}必须为11位数字`;break;case 'password':validationRule = (value) => $.trim(value).length >= 6;errorMessage = `${label}长度不能少于6个字符`;break;case 'address':validationRule = (value) => $.trim(value)!== '';errorMessage = `${label}不能为空`;break;case'scol':validationRule = (value) => $.trim(value)!== '';errorMessage = `${label}名称不能为空`;break;default:validationRule = (value) => $.trim(value)!== '';errorMessage = `${label}不能为空`;}return {input: $input,error: $error,validationRule,errorMessage};}).get();function validateInput(inputData) {const { input, error, validationRule, errorMessage } = inputData;error.text('');input.removeClass('error');const value = input.val();if (!validationRule(value)) {error.text(errorMessage);input.addClass('error');return false;}return true;}$inputs.on('change', function () {const inputData = inputs.find(item => item.input.is(this));if (inputData) {validateInput(inputData);}});$('#submitButton').on('click', function () {let isValid = true;inputs.forEach(inputData => {if (!validateInput(inputData)) {isValid = false;}});if (isValid) {alert('输入验证成功!');}});
});

JavaScript 代码通过 jQuery 实现了核心验证逻辑:

  1. 初始化配置
    • 提取所有文本和密码输入框,为每个输入框创建包含验证规则、错误提示信息、输入元素和错误显示元素的配置对象。
    • 使用switch语句根据输入框id设置不同的验证规则和错误提示,支持自定义扩展。
  2. 单个验证函数validateInput函数负责执行单个输入框的验证,清空错误信息、移除错误样式,根据验证规则判断输入是否合法,若不合法则显示错误提示并添加错误样式。
  3. 实时验证:为输入框绑定change事件,用户输入内容变化时立即触发验证,提供即时反馈。
  4. 提交验证:为提交按钮绑定click事件,遍历所有输入框进行验证,只有当所有输入框都通过验证时,才提示验证成功。

五、扩展与使用说明

  1. 新增验证字段:只需在 HTML 中添加form-group结构,并在 JavaScript 的switch语句中增加对应case配置验证规则和错误提示。
  2. 修改验证逻辑:直接调整validationRule函数内的判断条件,如修改长度限制、正则表达式等。
  3. 国际化支持:通过修改errorMessage文本内容,可轻松实现多语言错误提示。

通过以上代码和配置,开发者可以快速搭建功能强大的输入框验证系统,有效提升表单数据质量和用户体验。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/79556.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Kotlin 04Flow stateIn 和 shareIn的区别

一 Kotlin Flow 中的 stateIn 和 shareIn 一、简单比喻理解 想象一个水龙头&#xff08;数据源&#xff09;和几个水杯&#xff08;数据接收者&#xff09;&#xff1a; 普通 Flow&#xff08;冷流&#xff09;&#xff1a;每个水杯来接水时&#xff0c;都要重新打开水龙头从…

WebRTC 服务器之SRS服务器概述和环境搭建

1.概述 SRS&#xff08;Simple Realtime Server&#xff09;是一款高性能、跨平台的流媒体服务器&#xff0c;支持多种协议&#xff0c;包括 RTMP、WebRTC、HLS、HTTP-FLV、SRT、MPEG-DASH 和 GB28181。本文介绍了 SRS&#xff0c;包括其用途、关键功能、架构和支持协议。SRS 旨…

Dify - Embedding Rerank

注意&#xff1a;v100显卡会出现不适配&#xff0c;不推荐使用 1. 安装 Docker ubuntu 22.04 docker 安装&使用_ubuntu22.04 安装docker-CSDN博客 2. 安装vllm pip install -U xformers torch torchvision torchaudio triton --index-url https://download.pytorch.org/w…

LeetCode:链表的中间结点

1、题目描述 给你单链表的头结点 head &#xff0c;请你找出并返回链表的中间结点。 如果有两个中间结点&#xff0c;则返回第二个中间结点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[3,4,5] 解释&#xff1a;链表只有一个中间结点&#xff…

LabVIEW温控系统热敏电阻滞后问题

在 LabVIEW 构建的温控系统中&#xff0c;热敏电阻因热时间常数大&#xff08;2 秒左右&#xff09;产生的滞后效应&#xff0c;致使控温出现超调与波动。在不更换传感器的前提下&#xff0c;可从算法优化、硬件调整和系统设计等维度着手解决。 ​ 一、算法优化​ 1. 改进 PI…

技术犯规计入个人犯规吗·棒球1号位

在棒球运动中&#xff0c;虽然没有“技术犯规”这一特定术语&#xff0c;但存在多种违规行为或违反规则的情况&#xff0c;通常会导致判罚或处罚。以下是常见的违规行为及相关规则&#xff1a; 1. 投手违规&#xff08;Balk&#xff09; 定义&#xff1a;投手在垒上有跑垒员时…

Python核心技巧 类与实例:面向对象编程的基石

、核心概念图解 &#x1f3af; 类 vs 实例 类&#xff1a;对象的蓝图&#xff08;如"汽车设计图"&#xff09; 实例&#xff1a;类的具体实现&#xff08;如"你的特斯拉Model 3"&#xff09; class MyClass: # 类声明 count 0 # 类…

协程补充---viewModelScope 相关知识点

viewModelScope.launch 默认在 Dispatchers.Default 线程池执行Dispatchers.Default 是一个后台线程池&#xff0c;专门用于 CPU 密集型任务如果需要在主线程执行&#xff0c;必须显式指定 Dispatchers.Main remember 是 Compose 的状态管理函数(queueMenus) 是依赖项&#xff…

linux stm32mp157 GIC-V2 中断处理过程分析

/* ** 中断触发时&#xff0c;调用的 handle_arch_irq 入口地址。 ** 因为此时&#xff0c;挂接的就是 gic_handle_irq 函数&#xff01;gic_handle_irq 是个全局函数指针&#xff0c; ** static void __exception_irq_entry gic_handle_irq(struct pt_regs *regs) ** 它是Lin…

动态指令参数:根据组件状态调整指令行为

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》、《前端求职突破计划》 &#x1f35a; 蓝桥云课签约作者、…

直方图比较

目录 1、直方图比较的概念 2、直方图比较的主要原因 3、典型应用场景 4、基础直方图比较 5、多通道直方图比较 6、实时直方图检测 1、直方图比较的概念 直方图比较是通过数学方法计算两个直方图之间的相似度或差异度的技术。在计算机视觉中&#xff0c;直方图是对图像特征…

Windows11 VS code 安装 Cline 调用 Github MCP 配置过程坑点汇总

背景 为了调研 MCP 在 windows 上如何使用本地的命令执行一些操作而实现自动化的过程&#xff0c;在 B 站视频的指导下&#xff0c;进行相应填坑过程&#xff0c;最终运行起来&#xff0c;并实现 github 自动化编程并提交代码的过程。 B 站 Cline 视频演示 Cline Cline 是一…

kdump详解

kdump 是 Linux 系统中的一种内核崩溃转储机制&#xff0c;用于在系统崩溃时将内存中的数据保存到磁盘上&#xff0c;以便后续分析系统崩溃的原因。以下是对 kdump 的详细介绍&#xff1a; 1、工作原理 kdump 利用了 Linux 系统中的双启动机制。当系统启动时&#xff0c;它会…

RGB三原色

本文来源 &#xff1a; 腾讯元宝 ​​RGB三原色&#xff08;红绿蓝&#xff09;详解​​ RGB&#xff08;Red, Green, Blue&#xff09;是光学的三原色&#xff0c;通过不同比例的混合可以产生人眼可见的绝大多数颜色。它是现代显示技术&#xff08;如屏幕、投影仪&#xff09…

CSS兼容性:挑战与策略

CSS兼容性&#xff1a;挑战与策略 引言 在前端开发的广阔领域中&#xff0c;跨浏览器兼容性无疑是最棘手且难以预测的挑战之一。当我们精心设计的网页在Chrome中完美呈现&#xff0c;却在Safari中布局崩溃&#xff0c;或在Firefox中交互失效时&#xff0c;这种挫折感是每位前…

[ 设计模式 ] | 单例模式

单例模式是什么&#xff1f;哪两种模式&#xff1f; 单例模式就是一个类型的对象&#xff0c;只有一个&#xff0c;比如说搜索引擎中的索引部分&#xff0c;360安全卫士的桌面悬浮球。 饿汉模式和懒汉模式&#xff1a;饿汉模式是线程安全的&#xff0c;懒汉模式不是线程安全的…

Notebook.ai 开源程序是一套工具,供作家、游戏设计师和角色扮演者创建宏伟的宇宙 - 以及其中的一切

​一、软件介绍 文末提供程序和源码下载 Notebook.ai 开源程序是一套工具&#xff0c;供作家、游戏设计师和角色扮演者创建宏伟的宇宙 - 以及其中的一切。 二、软件特点 Notebook 是作家的规划工具&#xff0c;用于创建从宇宙到角色、情节到单个项目的任何内容。通过浏览器、…

centos7.0无法安装php8.2/8.3

在centos安装php8.2报错 configure: error: *** A compiler with support for C17 language features is required. 配置过程检测到你的系统编译器不支持 C17 语言特性&#xff0c;而 PHP 8.2 的编译需要编译器支持 C17 sudo yum update -y sudo yum install centos-releas…

Three.js + React 实战系列 - 客户评价区细解教程 Clients 组件✨(回答式评价 + 评分星级)

对个人主页设计和实现感兴趣的朋友可以订阅我的专栏哦&#xff01;&#xff01;谢谢大家&#xff01;&#xff01;&#xff01; 在这篇博客中&#xff0c;我们将实现一个简洁的 Hear from My Clients 客户评价区域。这个区块在个人主页中可以突显用户体验和专业度&#xff0c;帮…

Vim 命令从头学习记录

学习链接&#xff1a;eleon-vim基础教程 Vim - 基础翻屏操作 光标移动&#xff1a;hjkl 20j 向下移动20行&#xff0c;w 向后移动一个字符&#xff0c;b 向前移动一个字符。 Ctrl u 向上翻半页 UP Ctrl d 向下翻半页 Down Ctrl f 向下翻整页 Forward Ctrl b 向上翻整页 …