JS(JavaScript)数据校验 表单校验-案例

news2024/7/6 21:02:19

天行健,君子以自强不息;地势坤,君子以厚德载物。


每个人都有惰性,但不断学习是好好生活的根本,共勉!


文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。


今人不见古时月,今月曾经照古人。
古人今人若流水,共看明月皆如此。
——《把酒问月·故人贾淳令予问之》


文章目录

  • JS(JavaScript)数据校验 表单校验-案例
    • 1. 目的
    • 2. 实现
    • 3. 案例演示
      • 3.1 预览效果
      • 3.2 示例代码
      • 3.3 示例代码演示
      • 3.4 示例代码下载



JS(JavaScript)数据校验 表单校验-案例

1. 目的

客户端表单校验的目的
保证输入的数据符合要求
减轻服务器的压力

2. 实现

通过onsubmit事件绑定回调函数,判断表单数据是否符合要求
不符合要求则返回false
符合要求则返回true

3. 案例演示

实现一个用户登录界面,在填写的个人信息中对用户名密码手机号邮箱进行校验,最终提交前再次校验,所有校验条件通过方可提交表单

3.1 预览效果

案例最终结果界面展示
在这里插入图片描述

3.2 示例代码

示例代码如下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>数据校验-表单校验(这不是一个很成功的案例,仅供参考)</title>
    <style>
        table tr td:first-child{
            text-align: right;
        }

        .error{
            font-style: italic;
            font-size: 10px;
            color: red;
        }
        .ok{
            font-style: italic;
            font-size: 10px;
            color: green;
        }
    </style>

    <script>

        

        // 特别注意,在vscode中写正则表达式的规则时,在使用/pattern/的方式时内容不需要双斜杠,正常写即可,在使用new RegExp()创建参数时,需要将参数都以双斜杠填写
        // 校验用户名
        function checkUsername(){
            var username = $("username").value;
            // 校验用户名的正则表达式规则:用户名只能由数字、字母、下划线、中文组成,且只能以数字或字母开头和结尾,长度范围为[6-10]
            var regUsername = /^[\da-z][\u4E00-\u9FA5\w]{4,8}[\da-z]$/i;
            // 解析上面的正则规则:^以什么开始,\d表示数字0-9,a-z表示字母,\u4E00-\u9FA5表示中文,\w表示数字、字母、下划线,{4,8}表示中间的字符最少4位最多8位,$以什么结束,i表示忽略大小写
            if(regUsername.test(username)){
               //如果校验通过,则将名称后的标签改为绿色的ok
               $("usernamePrompt").innerText = "ok"; 
               $("usernamePrompt").className = "ok";
               return true;
            }else{
                //如果校验未通过,则将名称后的标签改为红色提示内容
                $("usernamePrompt").innerText = "用户名只能包含数字、字母、下划线、中文,且只能以数字或字母开头或者结尾,且长度为6-10位"
                $("usernamePrompt").className = "error";
                return false;
            }
        }
        // 校验密码
        function checkPassword(){
            var password = $("password").value;
            // 校验密码的正则表达式规则:密码只能由数字、字母、下划线组成,长度范围为[6-10]
            var regPassword = /^[\da-z]{6,10}$/i;
            // 解析上面的正则规则:^以什么开始,\d表示数字0-9,a-z表示字母,{6,10}表示密码长度6-8位,$以什么结束,i表示忽略大小写
            if(regPassword.test(password)){
               //如果校验通过,则将密码后的标签改为绿色的ok
               $("passwordPrompt").innerText = "ok";
               $("passwordPrompt").className = "ok";
               return true;
            }else{
                //如果校验未通过,则将密码后的标签改为红色提示内容
                $("passwordPrompt").innerText = "密码只能包含数字、字母、下划线,且长度为6-10位"
                $("passwordPrompt").className = "error";
                return false;
            }
        }
        // console.log(checkPassword());

        // 再次确认密码
        function checkPassword2(){
            var password = $("password").value;
            var password2 = $("password2").value;
            if(password==password2){
                $("password2Prompt").innerText = "ok";
                $("password2Prompt").className = "ok";
                return true;
            }else{
                $("password2Prompt").innerText = "密码不正确,请重新确认";
                $("password2Prompt").className = "error";
                return false;
            }
        }
        // 校验手机号
        function checkPhone(){
            var phone = $("phone").value;
            // 身份证的校验规则
            // var regPhone = /[1-9]\d{14}(\d{2}[\dX])?/i;
            // 手机号的校验规则,以1开头,第二位为3、5、6、7、8、9
            var regPhone = /^1[356789]\d{9}/;
            // 解析上面的正则规则:^以什么开始,\d表示数字0-9,{9}表示后面的数字为9位,i表示忽略大小写
            if(regPhone.test(phone)){
               //如果校验通过,则将手机号后的标签改为绿色的ok
               $("phonePrompt").innerText = "ok";
               $("phonePrompt").className = "ok";
               return true;
            }else{
                //如果校验未通过,则将手机号后的标签改为红色提示内容
                $("phonePrompt").innerText = "手机号以1开头,第二位为3,5,7,8,9,共十一位";
                $("phonePrompt").className = "error";
                return false;
            }
        }
        // 校验邮箱
        function checkEmail(){
            var email = $("email").value;
            // 校验密码的正则表达式规则:邮箱以字母、数字或下划线开头,@然后字母数字下划线,然后以点.加字母结尾
            var regEmail = /^\w+@\w+(\.[a-z]{2,3}){1,2}$/;
            // 解析上面的正则规则:^以什么开始,\d表示数字0-9,a-z表示字母,{6,10}表示密码长度6-8位,$以什么结束,i表示忽略大小写
            if(regEmail.test(email)){
               //如果校验通过,则将名称后的标签改为绿色的ok
               $("emailPrompt").innerText = "ok";
               $("emailPrompt").className = "ok";
               return true;
            }else{
                //如果校验未通过,则将名称后的标签改为红色提示内容
                $("emailPrompt").innerText = "邮箱格式为数字字母下划线开头,@后加数字字母下划线,然后以.后加字母结尾"
                $("emailPrompt").className = "error";
                return false;
            }
        }

        // 提交的校验,所有输入都没问题时,方可提交成功
        function onsubmit(){
            var b_username = checkUsername();
            console.log("username: ",b_username);
            var b_password = checkPassword();
            console.log("password: ",b_password);
            var b_password2 = checkPassword2();
            console.log("password2: ",b_password2);
            var b_phone = checkPhone();
            console.log("phone: ",b_phone);
            var b_email = checkEmail();
            console.log("email: ",b_email);
            if(b_username&&b_password&&b_password2&&b_phone&&b_email){
                return true;
            }else{
                return false;
            }
            console.log("all: ",b_username&&b_password&&b_password2&&b_phone&&b_email);

            // return checkUsername()&&checkPassword()&&checkPassword2()&&checkPhone()&&checkEmail();
        }

        function $(id){
            return document.getElementById(id);
        }
    </script>
</head>
<body>

    <h2>用户登录</h2>
    <form action="form_test.html" method="get" onsubmit="return onsubmit()">
        <!-- 一个表格,4个tr行 每个tr里面2个td列的快速写法 -->
        <!-- table>(tr>td*2)*4 -->
        <table>
            <tr>
                <td>用户名:</td>
                <td>
                    <input type="text" name="username" id="username" placeholder="请输入用户名" onblur="checkUsername()">
                    <span id="usernamePrompt"></span>
                </td>
            </tr>
            <tr>
                <td>密码:</td>
                <td>
                    <input type="password" name="password" id="password" placeholder="请输入密码" onblur="checkPassword()">
                    <span id="passwordPrompt"></span>
                </td>
            </tr>
            <tr>
                <td>确认密码:</td>
                <td>
                    <input type="password" name="password2" id="password2" placeholder="请再次输入密码" onblur="checkPassword2()">
                    <span id="password2Prompt"></span>
                </td>
            </tr>
            <tr>
                <td>出生日期:</td>
                <td><input type="date" name="birthday" id="birthday" placeholder="请输入出生日期"></td>
            </tr>
            <tr>
                <td>手机号:</td>
                <td>
                    <input type="" name="phone" id="phone" placeholder="请输入手机号" onblur="checkPhone()">
                    <span id="phonePrompt"></span>
                </td>
            </tr>
            <tr>
                <td>邮箱:</td>
                <td>
                    <input type="email" name="email" id="email" placeholder="请输入邮箱" onblur="checkEmail()">
                    <span id="emailPrompt"></span>
                </td>
            </tr>
            <tr>
                <td colspan="2"><br>
                    <input type="submit" value="注册" onclick="onsubmit()">
                    <input type="reset" value="重置">
                </td>
            </tr>
        </table>
    </form>

</body>
</html>

3.3 示例代码演示

浏览器打开页面后的效果如下
在这里插入图片描述
根据提示输入信息,提交进行校验

3.4 示例代码下载

案例示例代码已上传CSDN
下载地址:JavaScript 数据校验 用户登录 示例代码


感谢阅读,祝君暴富!


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

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

相关文章

PyPDF2拆分PDF文件为单个页面

本文目录 前言一、拆分成为单页1、代码解析2、处理效果图3、完整代码二、其它知识1、enumerate是什么① 语法② 功能③ 示例④ 更改起始索引前言 感觉之前写的不是很满意,为了充分满足付费用户的权益,所以打算把PyPDF2的各种类和用法都重新写一下,以便满足所有订阅用户的各…

Megatron-DeepSpeed与Megatron-LM在reduce grad上的差异

Megatron-DeepSpeed与Megatron-LM在reduce grad上的差异 一.Megatron-DeepSpeed 实现【deepspeed/runtime/engine.py】二.ModelLink 实现【ParamAndGradBuffer】1.ParamAndGradBuffer功能介绍2.实现原理A.分配一大块内存B.获取视图C.all_reduce grad 测试DP1,TP2,PP1,MBS1,zero…

匠心独运:红酒与手工艺的很好结合

在岁月的长河中&#xff0c;红酒与手工艺都以其不同的魅力和技艺&#xff0c;书写着各自的故事。当这两者相遇&#xff0c;仿佛是一场跨越时空的对话&#xff0c;不仅展现了匠心独运的技艺之美&#xff0c;更在无声中诉说着对品质与生活的热爱。今天&#xff0c;就让我们一起探…

CVE-2024-6387漏洞预警:尽快升级OpenSSH

OpenSSH维护者发布了安全更新&#xff0c;其中包含一个严重的安全漏洞&#xff0c;该漏洞可能导致在基于glibc的Linux系统中使用root权限执行未经身份验证的远程代码。该漏洞的代号为regreSSHion&#xff0c;CVE标识符为CVE-2024-6387。它驻留在OpenSSH服务器组件&#xff08;也…

基于Vue.js和SpringBoot的地方美食分享网站系统设计与实现

你好&#xff0c;我是计算机专业的学姐&#xff0c;专注于前端开发和系统设计。如果你对地方美食分享网站感兴趣或有相关需求&#xff0c;欢迎随时联系我。 开发语言 Java 数据库 MySQL 技术 Vue.js SpringBoot Java 工具 Eclipse, MySQL Workbench, Maven 系统展示…

swiftui中常用组件picker的使用,以及它的可选样式

一个可选项列表就是一个picker组件搞出来的&#xff0c;它有多个样式可以选择&#xff0c;并且可以传递进去一些可选数据&#xff0c;有点像前端页面里面的seleted组件&#xff0c;但是picker组件的样式可以更多。可以看官方英文文档&#xff1a;PickerStyle | Apple Developer…

1分钟了解,预写日志WAL的核心思路...

上一篇《刷盘&#xff0c;还是不刷盘&#xff0c;是一个问题》中我们遇到了哪些问题&#xff1f; 1. 已提交事务未提交事务的ACID特性怎么保证&#xff1f; 画外音&#xff1a;上一篇中遇到的问题&#xff0c;主要是原子性与持久性。 2. 数据库崩溃&#xff0c;怎么实施故障恢复…

Python28-5 k-means算法

k-means 算法介绍 k-means 算法是一种经典的聚类算法&#xff0c;其目的是将数据集分成 ( k ) 个不同的簇&#xff0c;每个簇内的数据点尽可能接近。算法的基本思想是通过反复迭代优化簇中心的位置&#xff0c;使得每个簇内的点与簇中心的距离之和最小。k-means 算法的具体步骤…

如何使用ECharts和Java接口实现可视化的数据挖掘

如何使用ECharts和Java接口实现可视化的数据挖掘 【引言】 随着大数据时代的到来&#xff0c;数据挖掘成为了一项重要的技术&#xff0c;在企业决策、市场分析等领域发挥着重要作用。数据挖掘需要将大量的数据进行分析和展示&#xff0c;而可视化是一种直观、形象的展示方式。…

【kafka】可视化工具cmak(原kafka-manager)安装问题解决

众所周知&#xff08;反正不管你知不知道&#xff09;&#xff0c;kafka-maneger更名了&#xff0c;现在叫cmak&#xff01;原因是什么呢&#xff1f;据不可靠小道信息说&#xff0c;原kafka-manager这个名字涉及到kafka商标使用问题&#xff0c;应该是被律师函警告了&#xff…

DeepFaceLive----AI换脸简单使用

非常强大的软件,官方github https://github.com/iperov/DeepFaceLive 百度云链接: 链接&#xff1a;https://pan.baidu.com/s/1VHY-wxqJXSh5lCn1c4whZg 提取码&#xff1a;nhev 1下载解压软件 下载完成后双击.exe文件进行解压.完成后双击.bat文件打开软件 2 视频使用图片换…

零基础入门GIS开发,必看实用教程【附智慧校园实战笔记源码】

GIS开发也叫webgis&#xff0c;web就是指网页端&#xff0c;所以GIS开发大部分情况下是指网页端的地图可视化开发。 因此GIS开发需要学习前端开发HTML/CSS/JS&#xff0c;以及一些常见的前端框架&#xff0c;例如vue和react等&#xff08;新中地教育通常是教vue&#xff0c;其…

【Kafka】记录一次Kafka消费者重复消费问题

文章目录 现象业务背景排查过程Push与Pull 现象 用户反馈消费者出现消息积压&#xff0c;并且通过日志看&#xff0c;一直重复消费&#xff0c;且没有报错日志。 业务背景 用户的消费者是一个将文件做Embedding的任务&#xff0c;&#xff08;由于AI技术的兴起&#xff0c;大…

Windows下Visual Studio 中配置第一个CUDA工程

今天整NVIDIA 的CUDA 安装和第一个CUDA 代码&#xff0c;顺便添加一个有CUDA工程的空框架。 &#xff08;1&#xff09;首先确认自己的CUDA 已经安装成功 >>cmd 进入命令窗&#xff0c;在窗口输入查看cuda 是否安装成功&#xff0c;能查到CUDA的版本号&#xff0c;表示安…

2.WeBASE一键部署

一、官方文档 一键部署可以在 同机 快速搭建WeBASE管理台环境&#xff0c;方便用户快速体验WeBASE管理平台。 一键部署会搭建&#xff1a;节点&#xff08;FISCO-BCOS 2.0&#xff09;、管理平台&#xff08;WeBASE-Web&#xff09;、节点管理子系统&#xff08;WeBASE-Node-…

统计信号处理基础 习题解答11-11

题目 考虑矢量MAP估计量 证明这个估计量对于代价函数 使贝叶斯风险最小。其中&#xff1a;, &#xff0c;且. 解答 贝叶斯风险函数&#xff1a; 基于概率密度的非负特性&#xff0c;上述对积分要求最小&#xff0c;那就需要内层积分达到最小。令内层积分为&#xff1a; 上述积…

视频批量剪辑一键垂直翻转,轻松转换格式为mov,视频制作从此事半功倍!

在视频制作的海洋中&#xff0c;我们时常需要面对各种挑战&#xff0c;其中之一就是视频的翻转与调整。不论是出于创意需求还是格式转换的需要&#xff0c;视频翻转都是一个不可或缺的功能。今天&#xff0c;我要向大家介绍一款真正的批量视频翻转神器——视频剪辑高手&#xf…

Python高速下载及安装的十大必备事项与C++联调

选择正确的版本&#xff1a; 访问Python官网&#xff08;https://www.python.org/&#xff09;下载最新稳定版本&#xff0c;目前最新稳定版本为3.12.4 避免下载并安装Python 2.x版本&#xff0c;因为它已经停止维护。 选择适合操作系统的安装包&#xff1a; 根据你的操作系…

2.4 C#开发环境 xml格式保存参数----范例实现

2.4C#开发环境 xml格式保存参数----范例实现 1 程序参数保存目录层次说明 1 选择程序号| 相机号|窗口号 2 导入参数&#xff1a;就会从本地目录读取参数&#xff0c;并且显示图片和ROI 3 保存参数&#xff1a;把当前控件图片和ROI信息保存到指定程序号|相机号|窗口号中 2 参数…

Xilinx FPGA:vivado单端RAM实现输出偶数(单端RAM的简单应用)

一、实验步骤 &#xff08;1&#xff09;先创建一个工程 &#xff08;2&#xff09;调用IP资源找到RAMs&ROMs&BRAMs&#xff0c;选择其中的块资源 &#xff08;3&#xff09;修改配置参数 timescale 1ns / 1ps //写入0-99的数据&#xff0c;读出偶数 module single_ra…