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


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


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


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


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


文章目录

  • 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 数据校验 用户登录 示例代码


感谢阅读,祝君暴富!


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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Spark join数据倾斜调优

Spark中常见的两种数据倾斜现象如下 stage部分task执行特别慢 一般情况下是某个task处理的数据量远大于其他task处理的数据量&#xff0c;当然也不排除是程序代码没有冗余&#xff0c;异常数据导致程序运行异常。 作业重试多次某几个task总会失败 常见的退出码143、53、137…

【雷丰阳-谷粒商城 】【分布式高级篇-微服务架构篇】【18】认证服务02—微博社交登录

持续学习&持续更新中… 守破离 【雷丰阳-谷粒商城 】【分布式高级篇-微服务架构篇】【18】认证服务02—微博社交登录 微博社交登录图示原理前置准备实现流程完整代码 参考 微博社交登录 OAuth&#xff1a; OAuth&#xff08;开放授权&#xff09;是一个开放标准&#xff0…

qt6 通过http查询天气的实现

步骤如下&#xff1a; cmakelist 当中&#xff0c;增加如下配置 引入包 访问远端api 解析返回的数据 cmakelist 当中&#xff0c;增加如下配置&#xff0c;作用是引入Network库。 引入包 3、访问远端api void Form1::on_pushButton_clicked() {//根据URL(http://t.weather.…

6.Android逆向协议-配置FD抓包环境

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a;微尘网校 上一个内容&#xff1a;5.Android逆向协议-初识HTTP和HTTPS协议 工具下载&#xff1a; 链接&#xff1a;https://pan.baidu.…

20.《C语言》——【移位操作符】

&#x1f339;开场语 亲爱的读者&#xff0c;大家好&#xff01;我是一名正在学习编程的高校生。在这个博客里&#xff0c;我将和大家一起探讨编程技巧、分享实用工具&#xff0c;并交流学习心得。希望通过我的博客&#xff0c;你能学到有用的知识&#xff0c;提高自己的技能&a…

大数据之Linux部署常用命令脚本封装

文章目录 编写集群命令执行脚本xcall集群命令执行1. 脚本需求2. 需求分析3. 脚本实现3.1 创建脚本存放目录3.2 编写xcall脚本3.3 修改脚本执行权限3.4 测试脚本 编写集群分发脚本xsync集群分发脚本1. 脚本需求2. 需求分析3. 脚本实现3.1 创建脚本存放目录3.2 编写xsync脚本3.3 …

cad由于找不到mfc140u.dll的解决方法,彻底解决mfc140u.dll丢失问题

在计算机辅助设计&#xff08;CAD&#xff09;的时候&#xff0c;我们可能会遇到各种错误和问题。其中&#xff0c;“CAD由于找不到mfc140u.dll&#xff0c;无法继续执行代码”的错误提示。这个问题可能会导致CAD无法启动运行&#xff0c;因此&#xff0c;我希望通过分享我的经…

外籍学员报到,四川眼科医院开启国际屈光手术专科医生培训

“能够来到中国、来到四川眼科医院学习&#xff0c;我真的很幸运&#xff01;”这个夏天&#xff0c;对于马来西亚眼科医生Ivan Cheng En Yoo来说&#xff0c;充满了期待和挑战。他是首位来到四川眼科医院进修学习的马来西亚籍医生&#xff0c;Ivan Cheng将在周进院长的带领下&…

AzureDataFactory 实体间的关联如何处理(Lookup)

使用ADF从外部数据源(例如Sql Server)往D365推数时&#xff0c;实体间的Lookup一定是要做的&#xff0c;本篇以我项目中的设备为例&#xff0c;设备表中有产品的lookup字段 设备表结构如下 msdyn_customerasset 表名ID 设备表guidSerialNumber设备序列号ProductCode设备对应的…

docker部署简单的Kafka

文章目录 1. 拉取镜像2. 运行创建网络运行 ZooKeeper 容器运行 Kafka 容器 3. 简单的校验1. 检查容器状态2. 检查 ZooKeeper 日志3. 检查 Kafka 日志4. 使用 Kafka 命令行工具检查5. 创建和删除测试主题 1. 拉取镜像 选择一组兼容性好的版本。 docker pull bitnami/kafka:3.6…

2024“国培“来也UiBot6.0 RPA数字机器人开发综合应用

前言 (本博客中会有部分课程ppt截屏,如有侵权请及请及时与小北我取得联系~) 国培笔记: 依次读取数组中每个元素 输出调试信息 [ value=[ "vivian", value[0] "老师", "上午好,O(∩_∩)O哈哈~" ], v…

小红书 达芬奇:生活问答 AI 机器人

小红书去年 9 月开始内测的生活问答 AI 机器人&#xff1a;达芬奇&#xff0c;现在可以在小红书 APP 上用了 得益于小红书平台的特性&#xff0c;该助手擅长吃、住、宠、喝、学等等各类生活知识&#xff0c;目前还在搞活动&#xff0c;写评测笔记最高得 666 元

DMA学习笔记

参考文章 https://blog.csdn.net/as480133937/article/details/104927922 DMA简介 DMA&#xff0c;全称Direct Memory Access&#xff0c;即直接存储器访问。DMAC 即 DMA 控制器&#xff0c;提供了一种硬件的数据传输方式&#xff0c;无需 CPU 的介入&#xff0c;可以处理外…

VS Code 常用快捷键大全

Visual Studio Code 是目前最好用的代码编辑器之一。它提供了许多开箱即用的功能以及丰富的第三方扩展&#xff0c;本文将分享常用的 VS Code 快捷键&#xff0c;助你提高开发效率&#xff01; 代码导航 跳转指定行&#xff1a;快速跳转到文件中的指定行&#xff0c;只需按下快…

从0开始transformer代码理解(附带调试和个人原理理解)

代码来源 本次代码来源自github https://github.com/graykode/nlp-tutorial 里面的5.1 transformer代码 本文目录 代码来源第一步 数据准备&#xff08;从main函数开始&#xff09;make_batch函数 **Transformer 主体函数定义代码**Encoder层词向量维度嵌入掩码部分实现多层e…

Linux运维之需掌握的基本Linux命令

前言&#xff1a;本博客仅作记录学习使用&#xff0c;部分图片出自网络&#xff0c;如有侵犯您的权益&#xff0c;请联系删除 目录 一、SHELL 二、执行命令 三、常用系统工作命令 四、系统状态检测命令 五、查找定位文件命令 六、文本文件编辑命令 七、文件目录管理命令…

echarts--Tree的label上添加图片

使用echarts的rich富文本&#xff0c;配合lable的formatter去实现 主要代码&#xff1a;label里 rich: {img1: {backgroundColor: {image: Cloudy,},height: 40}},formatter: function (param) {var res "";res {img1|} param.name;return res;}, 如果想要哪一节…

Python 生成Md文件带超链 和 PDF文件 带分页显示内容

software.md # -*- coding: utf-8 -*- import os f open("software.md", "w", encoding"utf-8") f.write(内部测试版2024 MD版\n) for root, dirs, files in os.walk(path): dax os.path.basename(root)if dax "":print("空白…

大模型补贴政策来了!!!

广州琶洲人工智能与数字经济试验区管理委员会 广州市海珠区科技工业商务和信息化局关于印发广州市海珠区建设人工智能大模型应用示范区实施细则的通知 各有关单位&#xff1a; 为进一步促进海珠区人工智能大模型产业发展&#xff0c;加快建设人工智能大模型应用示范区&#xf…

昇思MindSpore学习总结八——模型保存与加载

在训练网络模型的过程中&#xff0c;实际上我们希望保存中间和最后的结果&#xff0c;用于微调&#xff08;fine-tune&#xff09;和后续的模型推理与部署&#xff0c;接下来将介绍如何保存与加载模型。 1.构建模型 import numpy as np import mindspore from mindspore impo…