JavaScript 表单验证 功能 用法运用 详解

news/2025/3/10 20:42:16/文章来源:https://www.cnblogs.com/baisemoshui/p/18763609

JavaScript 表单验证是确保用户输入的数据符合预期格式和要求的关键步骤。有效的表单验证可以提高用户体验,减少服务器负担,并确保数据的完整性和安全性。以下是关于 JavaScript 表单验证的详细功能、用法和实践示例。

基本验证方法

  1. 实时验证 (Real-time Validation)

    • 在用户输入时立即进行验证。
    • 常用于输入框内容变化事件 (oninput) 或失去焦点事件 (onblur)。
    document.getElementById('email').oninput = function() {var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6}$/;var emailInput = this.value;if (!emailPattern.test(emailInput)) {// 显示错误信息this.setCustomValidity("Please enter a valid email address");} else {// 清除错误信息this.setCustomValidity("");}
    };
    
  2. 提交时验证 (On-submit Validation)

    • 在表单提交时进行一次性验证。
    • 常用于 onsubmit 事件。
    document.getElementById('myForm').onsubmit = function(event) {var name = document.getElementById('name').value;if (name === "") {alert("Name must be filled out");event.preventDefault(); // 阻止表单提交return false;}// 其他验证逻辑...return true;
    };
    

常用验证技术

  1. 内置 HTML5 验证

    • 使用 HTML5 属性如 requiredtype="email" 等进行基本验证。
    <form id="myForm"><input type="text" id="name" name="name" required><input type="email" id="email" name="email" required><button type="submit">Submit</button>
    </form>
    
  2. JavaScript 自定义验证

    • 使用正则表达式验证格式(如邮箱、电话号码)。
    • 验证数值范围、日期格式等。
    function validatePhoneNumber(phoneNumber) {var phonePattern = /^\d{10}$/;return phonePattern.test(phoneNumber);
    }
    
  3. 结合 CSS 显示错误信息

    • 使用 JavaScript 修改元素的类或直接插入错误信息。
    function showError(message) {var errorElement = document.getElementById('error-message');errorElement.textContent = message;errorElement.style.display = 'block';
    }
    

高级验证技术

  1. 使用 FormData 和约束验证 API

    • FormData 对象可用于序列化表单数据。
    • checkValidity() 方法是约束验证 API 的一部分,用于检查表单元素是否有效。
    function validateFormWithConstraints() {var form = document.getElementById('myForm');if (!form.checkValidity()) {form.reportValidity(); // 显示浏览器默认的验证错误信息return false;}return true;
    }
    
  2. 第三方库

    • 使用库如 Parsley.jsValidate.jsYup 等,可以简化复杂的验证逻辑。
    • 这些库通常提供更丰富的验证功能和更好的跨浏览器支持。
    // 使用 Parsley.js 示例
    $('#myForm').parsley();
    

实践示例

以下是一个结合多种技术的表单验证示例:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Form Validation Example</title><style>.error { color: red; display: none; }</style>
</head>
<body><form id="myForm"><label for="name">Name:</label><input type="text" id="name" name="name" required><span id="name-error" class="error">Name is required</span><br><label for="email">Email:</label><input type="email" id="email" name="email" required><span id="email-error" class="error">Please enter a valid email</span><br><button type="submit">Submit</button></form><script>document.getElementById('myForm').onsubmit = function(event) {var valid = true;var name = document.getElementById('name').value;var email = document.getElementById('email').value;var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6}$/;if (name === "") {document.getElementById('name-error').style.display = 'inline';valid = false;} else {document.getElementById('name-error').style.display = 'none';}if (!emailPattern.test(email)) {document.getElementById('email-error').style.display = 'inline';valid = false;} else {document.getElementById('email-error').style.display = 'none';}if (!valid) {event.preventDefault();}};</script>
</body>
</html>

总结

JavaScript 表单验证是 Web 开发中不可或缺的一部分。通过结合 HTML5 的内置验证功能、JavaScript 的灵活性和第三方库的强大功能,可以创建高效、用户友好的表单验证体验。良好的验证不仅提高了数据的准确性,还提升了用户对网站的信任度。

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

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

相关文章

Vue3--ref - reactive

reactive可以深层次对比ref定义对象类型是借用reactive总结

征程 6 工具链 BEVPoolV2 算子使用教程 【2】-BEVPoolV2 QAT 链路实现示例

1.引言 在上一篇帖子中,我们已详尽阐述了 BEVPoolV2 相较于 BEVPoolV1 的改进之处,并对 BEVPoolV2 实现的代码进行了解析。想必大家对 BEVPoolV2 算子的功能及实现已有了一定程度的理解,此篇帖子将展示 征程 6 工具链 BEVPoolV2 单算子 QAT 链路的实现范例,以进一步增进用户…

包装类--java进阶day05

1.包装类比如要让s+100,输出223.如果直接相加,结果是123100,这时就可以将s转换为包装类,然后再用包装类进行相加 2.包装类类型3.手动拆/装箱 我们这里只介绍Integer,其他包装类都是一个模板 第一个方式已经过时,不建议使用.4.自动拆/装箱.5.包装类常用方法 可以直接类名调…

掌握这些 UI 交互设计原则,提升产品易用性

在当今数字化时代,用户对于产品的体验要求越来越高,UI 交互设计成为决定产品成败的关键因素之一。一个易用的产品能够让用户轻松、高效地完成各种操作,而实现这一目标的核心在于遵循一系列科学合理的 UI 交互设计原则。本文将详细阐述简洁性、一致性、反馈、可访问性以及用户…

C++ this

今天开始进入C++学习了,之前的这周末复习下 侧重与底层原理 当把函数放到结构体里面,编译器会帮我们传递一个参数:结构体的地址this指针本质就是对象地址

【由技及道】镜像星门开启:Harbor镜像推送的量子跃迁艺术【人工智障AI2077的开发日志010】

当构建产物需要穿越多维宇宙时,当Docker镜像要同时存在于72个平行世界——这就是镜像推送的量子艺术。本文记录一个未来AI如何通过Harbor建立镜像星门,让每个构建产物都能瞬间抵达所有维度。![量子镜像跃迁示意图]( 摘要:当构建产物需要穿越多维宇宙时,当Docker镜像要同时存…

构造矩形

构造矩形 题目描述 现有 \(n\) 条长度为 \(m\) 的线段,垂直于 x 轴分布,且互不重合。第 \(i\) 条线段的两个端点均为整数点,分别为 \((a_i, 0)\) 和 \((a_i, m)\)。每条线段上有 \(m+1\) 个整数点,纵坐标分别为 \(0, 1, 2, …, m\)。 现在,你需要选择两条不同的线段,并在…

Llama 4 即将发布,引入语音能力;AI 智能运动眼镜 BleeqUp:实时对讲、AI 自动成片等功能丨日报

开发者朋友们大家好:这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE(Real-Time Engagement) 领域内「有话题的 技术 」、「有亮点的 产品 」、「有思考的 文章 」、「有态度的 观点 」、「有看点的 活动 」,但内容仅代表编辑…

BigDecimal类--java进阶day05

1.BigDecimal出现的原因2.BigDecimal的创建不推荐第一种形式,会有误差第二种方式创建对象第三种方式调用方法2.BigDecimal常用方法除法的特殊事项 如果有除不尽的情况,常规的除法会出现问题divide的另一种方法 divide还有一个重载方法,可以解决除不尽的问题舍入模式中,进一…

3.10 学习记录

实现了员工页面的前端代码实现点击查看代码 <script setup> import { ref, onMounted } from vue import axios from axiosconst searchEmp = ref({name: ,gender: ,job: , })onMounted(() => {search(); })const search = async () => {const url = `https://web-…

transformer 中的掩码类型

知识是我们已知的也是我们未知的基于已有的知识之上我们去发现未知的由此,知识得到扩充我们获得的知识越多未知的知识就会更多因而,知识扩充永无止境

如何设计、维护和推广 API:专业人士的实用指南

API 在今天的数字化环境中扮演着至关重要的角色,它们作为系统和应用程序之间的连接纽带。对于公司而言,打造用户喜爱的 API、有效地维护它们并成功地在内部和外部推广,不仅能提高数字价值,还能带来巨大的业务收益。 API 设计是创建一个标准化、易于理解且稳定的应用程序接口…