基于 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.pswp.cn/pingmian/79556.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/79556.shtml
英文地址,請注明出處:http://en.pswp.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 向上翻整頁 …