JS进行简单的表单验证(附详细代码)

2023-05-16

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 一、JS表单验证是什么?
  • 一、JS表单验证需求分析?
  • 三、表单验证所需事件
    • 设置from表单及其文本框,代码如下(示例):
    • 2.设置触发事件函数JS代码
    • 3.结果展示
  • 总结



提示:以下是本篇文章正文内容,下面案例可供参考

一、JS表单验证是什么?

表单验证是javascript中的高级选项之一。JavaScript 可用来在数du据被送往服务器前对 HTML 表单中的这些输入数据进行验证。

一、JS表单验证需求分析?

        表单验证需求
        1、用户名不能为空
        2、用户名必须在6-14位
        3、用户名和密码由数字和字母组成(正则表达式)
        4、密码和确认密码一致,邮箱地址合法
        5、统一失去焦点验证
        6、错误信息统一在span标签中显示,要求字体12号,红色,验证成功显示绿色字体
        7、文本框获得焦点,清除错误信息,如果文本框中数据不合法,要求清空文本框的		value
        8、最终表单所有项均合法方可提交

三、表单验证所需事件

1、所用到的三个事件:onfocus(焦点聚焦事件)、onblur(焦点离开事件)、onclick点击事件)。
2、利用事件触发函数,函数中执行校验的信息。
3、使用butten按钮提交事件
结果展示

设置from表单及其文本框,代码如下(示例):

<form id="userFrom" method="get">

    用户名:&nbsp;&nbsp;&nbsp;&nbsp;<input type="text" id="username" name="username">
    <span id="usernameError"></span>
    <br>
    
    密码:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="text" id="password" name="password">
    <span id="passwordError"></span>
    <br>
    
    确认密码:<input type="text" id="confirmPwd" name="confirmPwd">
    <span id="confirmPwdError"></span>
    <br>
    
    邮箱地址:<input type="text" id="email" name="email">
    <span id="emailError"></span>
    <br>
    
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    <input type="sbutten" value="提交信息" id="submitBtn">
    
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    <input type="reset" value="重置信息" id="resetBtn">
</form>

2.设置触发事件函数JS代码

JS表单验证代码(示例):

   <script type="text/javascript">
        /*
            表单验证需求
            1、用户名不能为空
            2、用户名必须在6-14位
            3、用户名和密码由数字和字母组成(正则表达式)
            4、密码和确认密码一致,邮箱地址合法
            5、统一失去焦点验证
            6、错误信息统一在span标签中显示,要求字体12号,红色
            7、文本框获得焦点,清除错误信息,如果文本框中数据不合法,要求清空文本框的value
            8、最终表单所有项均合法方可提交
         */
         //网页加载完毕后可执行JS代码
        window.onload=function () {
            var retVal=true;
            var usernameElt=document.getElementById("username");
            var usernameErrorSpan=document.getElementById("usernameError");
            //用户名正则表达式
            var usernameRegExp = /^[a-zA-Z0-9_-]{4,16}$/;
            
			 //用户名验证开始
            //用户名验证,失去焦点验证
            usernameElt.onblur=function () {
                //判断username的value值是否为空
                //清除前后空白
                var username = usernameElt.value.trim();
                usernameElt.value = username;
                var usernameRetVal = usernameRegExp.test(username);

                //username不为空或全为空格开始验证
                if (!(usernameElt.value=="")) {
                    if (!usernameRetVal) {
                        //此处测试正确
                        //获取用户名后文本对象
                        usernameErrorSpan.innerHTML = "<font color='red'>用户名不符合格式</font>";
                    } else {
                        //此处测试正确
                        usernameErrorSpan.innerHTML = "<font color='green'>用户名符合格式</font>";
                    }
                }else {
                    usernameErrorSpan.innerHTML="<font color='red'>用户名不能为空</font>"
                }
            }




            //获取焦点,清除span内容
            usernameElt.onfocus=function () {
                //如果username等于一个或多个空格
                //清空非法value,使用index函数,结果等于-1,则不含有该字符串
                if(!(usernameErrorSpan.innerText.indexOf("不")==-1)){
                    //如果usernameError不为空串,字符串中含有"不"清空value
                    usernameElt.value="";
                }
                //清空span内容
                usernameErrorSpan.innerText="";
            }
            
         

            //密码验证,失去焦点验证
            var passwordElt=document.getElementById("password");
            var  passwordErrorSpan=document.getElementById("passwordError")
            var passwordRegExp=/^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z\\W]{6,18}$/
            //密码验证,失去焦点开始验证
            passwordElt.onblur=function () {
                //去除前后空白
                var password=passwordElt.value.trim();
                passwordElt.value=password;
                //password不为空开始验证
                if(!(passwordElt.value=="")){
                    //密码格式验证
                    var passwordRetVal=passwordRegExp.test(password);
                    if(passwordRetVal){
                       passwordErrorSpan.innerHTML="<font color='green'>密码格式正确</font>"
                    }else{
                        passwordErrorSpan.innerHTML="<font color='red'>密码格式不正确(数字和字母结合)</font>"
                    }
                }else{
                    //密码不能为空
                    passwordErrorSpan.innerHTML="<font color='red'>密码不能为空</font>"
                }
            }




            //密码获得焦点,密码获得焦点,重复密码span内容清空
            passwordElt.onfocus=function () {
                //清空非法value,使用index函数,结果等于-1,则不含有该字符串
                if(!(passwordErrorSpan.innerText.indexOf("不")==-1)){
                    //如果passwordErrorSpan不为空串,字符串中含有"不"清空value
                    passwordElt.value="";
                }
                //清空span内容
                passwordErrorSpan.innerText="";
                

            }




            //确认密码验证,失去焦点验证
            var confirmPwdElt=document.getElementById("confirmPwd");
            var  confirmPwdErrorSpan=document.getElementById("confirmPwdError");

            //密码验证,失去焦点开始验证
            confirmPwdElt.onblur=function () {
                //清除验证密码中的前后空白
                var confirmPwd=confirmPwdElt.value.trim();
                confirmPwdElt.value=confirmPwd;
                //判断密码内容是否为空,不为空则开始验证
                if(!(confirmPwdElt.value=="")){
                    //重复密码内容不为空,开始验证
                    //判断密码是否为空,不为空则开始验证
                    if(passwordElt.value==""){
                        confirmPwdErrorSpan.innerHTML="<font color='red'>密码不能为空</font>"
                    }else{
                        //判断密码和重复密码是否相等
                        if(passwordElt.value===confirmPwdElt.value){
                            //更改passwordErrorSpan中内容
                            confirmPwdErrorSpan.innerHTML="<font color='green'>重复密码验证成功</font>"
                        }else {
                            confirmPwdErrorSpan.innerHTML="<font color='red'>重复密码验证不成功</font>"
                        }
                    }
                }else{
                    confirmPwdErrorSpan.innerHTML="<font color='red'>验证密码不能为空</font>"
                }
            }
            //获取重复密码焦点时,清空span内数据,如果重复密码错误,则清空重复密码
            confirmPwdElt.onfocus=function () {
                //使用indexOf()方法判断span字符串中是否含有"失"字,结果等于-1,则不含有失字
                if(!(confirmPwdErrorSpan.innerHTML.indexOf("失")==-1)){
                    //清空非法重复密码值
                    confirmPwdElt.value="";
                }
                //获取焦点时清除span内值
                confirmPwdErrorSpan.innerText="";
            }





            //邮箱地址验证
            var emailElt=document.getElementById("email");
            var emailErrorSpan=document.getElementById("emailError")
            var emailRegExp=/^\w{3,12}@\w{1,5}\.[a-z]{2,3}$/;
            //失去焦点时开始验证
            emailElt.onblur=function () {
                //去除邮箱地址前后空白
                var email=emailElt.value.trim();
                emailElt.value=email;
                var emailRetVal=emailRegExp.test(email);
                //邮箱地址不为空时开始验证
                if(!(emailElt.value=="")){
                    //开始验证
                    if(emailRetVal){
                        emailErrorSpan.innerHTML="<font color='green'>邮箱地址格式验证成功</font>"
                    }else{
                        emailErrorSpan.innerHTML="<font color='red'>邮箱地址格式验证不成功</font>"
                    }
                }else {
                    emailErrorSpan.innerHTML="<font color='red'>邮箱地址不能为空</font>"
                }
            }



            //获得焦点时,邮箱格式不正确,则清空非法邮箱value值,并清除span内容
            emailElt.onfocus=function () {
                //indexOf方法结果为-1,则表示不含有该字符串
                if(!(emailErrorSpan.innerText.indexOf("失")==-1)){
                    //清空非法value值
                    emailElt.value="";
                }
                    //不管地址验证是否成功,在获取焦点后都要讲span中内容删除
                emailErrorSpan.innerText="";
            }
            // 提交表单
            //获取表单队形
            var submitElt=document.getElementById("submitBtn");
            //点击事件发生,进行表单信息提交验证
            submitElt.onclick=function () {
                    if(usernameErrorSpan.innerText==""){
                        usernameElt.focus();
                         usernameElt.blur();
                    }
                    if(passwordErrorSpan.innerText==""){
                        passwordElt.focus();
                        passwordElt.blur();
                    }
                    if (confirmPwdElt.innerText==""){
                        confirmPwdElt.focus();
                        confirmPwdElt.blur();
                    }
                    if(emailElt.innerText==""){
                        emailElt.focus();
                        emailElt.blur();
                    }
                    //表单提交
                var userFromElt=document.getElementById("userFrom");
                if(usernameElt.innerText.indexOf("不")==-1||passwordElt.innerText.indexOf("不")==-1||confirmPwdElt.innerText.indexOf("不")==-1||emailElt.innerText.indexOf("不")==1){
                    userFromElt.action="http://localhost:8080/jd/save"
                    //提交表单
                    userFromElt.submit();
                }
            }
        }
    </script>

3.结果展示

代码测试结果

该处使用的url网络请求的数据。


总结

JS代码验证总结:
1、利用触发事件实现对表单信息的验证,并使用butten按钮提交表单。
2、不适用submit提交按钮的原因:需要对四项验证内容进行验证,验证成功才能提交,submit按钮直接提交信息。
3、点击提交按钮信息后出现404错误,是因为表单IP地址有误,换一个可以使用的IP地址。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JS进行简单的表单验证(附详细代码) 的相关文章

  • 睿尔曼超轻量仿人机械臂--Realsense D435手眼标定

    目录 1 环境要求 2 概述 3 开始前准备 4 aruco ros配置 5 easy handeye配置 6 启动相关launch文件开始标定 1 环境要求 本教程主要介绍RM机械臂与Realsense D435相机手眼标定的配置及方法
  • Docker容器-------dockerfile概念简介

    文章目录 引言一 dockerfile概念二 Docker镜像的创建1 基于现有镜像创建2 基于本地模板创建3 基于dockerfile创建3 1 dockerfile结构 xff08 四部分 xff09 3 2 构建镜像命令 三 Dock
  • 关联github与dockerhub生成镜像

    首先登录dockerhub xff0c 按照下面的步骤 xff0c 绑定github账户 然后选择Create Create Automated build xff0c 选中指定的dockerfile项目 选中指定的Dockerfile自动
  • VSCode远程连接Gitee

    目录 1 gitee介绍2 准备3 生成ssh公钥4 添加公钥5 初始化git6 关联远程仓库7 推送更新的代码8 拉取远程仓库代码9 移除远程连接 1 gitee介绍 Gitee xff08 码云 xff09 是开源中国 xff08 OS
  • 从零开始搭建ROS下Intel RealSense D435i的使用环境(全安装流程记录)

    文章目录 一 Ubuntu16 04安装二 Ubuntu16 04下的ROS安装三 cmake升级替换四 相机SDK安装 xff08 注意 xff1a 安装时不要连接相机 xff09 五 安装对应的ROS接口六 关闭红外结构光参考文章 为了
  • 解决fp = builtins.open(filename, “w+b“)FileNotFoundError: [Errno 2] No such file or directory:

    最近在做一些关于图像处理方面的问题 xff0c 用到了python中的PIL库对图像进行保存 xff0c 代码如下 span class token comment 新建一张图片 span GroundImg span class toke
  • python-旋转图像并裁剪出黑色边框

    在进行旋转图像时 xff0c 遇到了旋转后的图像存在黑边的情况 xff0c 上网查了很多方法 xff0c 找到了这个方法是比较好的 xff0c 附上链接添加链接描述 span class token keyword def span spa
  • 解决NetworkX遇到 AttributeError: ‘Graph‘ object has no attribute ‘node‘ 问题

    学习NetworkX时 xff0c 查看结点属性时遇到了报错 xff1a AttributeError Graph object has no attribute node G span class token operator 61 sp
  • Docker的安装以及可视化图形界面的安装

    Dockerd的主要作用 xff1a 起到一个 容器 xff08 代码 43 环境 xff09 的作用 xff0c 解决了软件跨环境迁移导致的版本不兼容等问题 使用沙箱机制 xff0c 相互之间没有任何接口 xff0c 且性能开销极低 Do
  • MySQL数据库忘记密码后,如何修改密码

    MySQL修改密码 xff08 本人亲身试验可行 xff01 xff09 1 以管理员身份打开命令行 2 在命令行中进入MySQL的bin目录所在文件夹 即 xff1a 在命令行中输入 xff1a cd 路径 路径查找如下 xff1a 命令
  • 人工智能_03

    逻辑回归 xff08 用于解决分类问题的一种模型 xff0c 核心 xff1a 找到决策边界 xff09 根据数据的特征或者属性 xff0c 计算出其归属于某一类别的概率 P x P x P x
  • 人工智能_04

    无监督学习 xff08 Unsupervised Learning xff09 机器学习的一种方法 xff0c 没有给定事先标记过的训练示例 xff0c 自动对输入的数据进行分类或分群 优点 xff1a 算法不受监督信息 xff08 偏见
  • 远程连接本地以及其他机器上的Ubuntu虚拟机

    连接本机的Ubuntu虚拟机 xff1a 1 查看Ubuntu虚拟机是否安装了ssh服务 xff1a service sshd status 2 安装ssh服务 sudo apt get install openssh server 3 开
  • 注册中心Nacos

    注册中心 nacosNacos注册中心与配置中心nocos优点与缺点启动docker镜像测试linux windows下单机启动应用启动个报错nacos如何修改用户名密码 nacos Nacos注册中心与配置中心 nacos官方文档 Nac
  • git常见问题

    git常见错误 1 在git pull时遇到fatal refusing to merge unrelated histories错误 意思是 xff1a 拒绝合并不相关的分支 表示要合并的本地分支和远程分支是相互独立而不是相关联的 我的情
  • PID 控制器

    本文参考 xff1a 从不懂到会用 xff01 PID从理论到实践 哔哩哔哩 bilibili 目录 1 PID控制器入门 1 1 PID控制器的引入 1 2 PID控制器适用系统 1 3 PID控制器宏观意义 2 PID控制器的必备知识
  • Linux - 第11节 - 网络入门

    目录 1 计算机网络背景 1 1 网络发展 1 2 认识 34 协议 34 2 网络协议初识 2 1 协议分层 2 2 OSI七层模型 2 3 TCP IP五层 xff08 或四层 xff09 模型 3 网络传输基本流程 3 1 同局域网的
  • 【经典问题:汉诺塔】C语言编写程序实现汉诺塔问题——函数递归

    汉诺塔 xff08 Tower of Hanoi xff09 xff0c 又称河内塔 xff0c 是一个源于印度古老传说的益智玩具 大梵天创造世界的时候做了三根金刚石柱子 xff0c 在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘 大梵
  • 1.语音增强技术概述

    一 语音增强发展历史 1987年 xff1a Lim和Oppenheim发表语音增强的维纳滤波方法 xff1b 1987年 xff1a Boll发表谱减法 xff1b 1980年 xff1a Maulay和Malpass提出软判决噪声一直方

随机推荐

  • PCB软件对比分析(AD、Pads、Allegro)

    文章目录 前言一 国内的EDA软件市场二 Altium三 Mentor四 Candence总结 前言 今天来说一说国内用的最多的三款PCB软件对比 一 国内的EDA软件市场 国内的EDA软件几乎被三家瓜分 1 Altium 2 Canden
  • (二)立创EDA之新建工程,原理图,PCB

    文章目录 前言一 界面介绍二 工程广场介绍三 新建工程3 1 修改图纸属性 四 基本的操作介绍4 1 添加器件4 2 连接导线4 3 添加插针4 4 查看封装4 5 修改封装 五 原理图转PCB5 1设置PCB高亮显示元器件5 2 布局传递
  • stm32mp157 wm8960音频驱动调试笔记

    这次调试wm8960音频驱动遇到了好多的坑 xff0c 研究好几天终于调试好了 驱动调试步骤 驱动能不能成功加载是调试的第一大步骤 xff0c 也是最关键的步骤之一 1 查看硬件原理图 2 打开对应的设备树 xff08 stm32mp157
  • ROS发布者(Publisher)和订阅者(Subscriber)的python编程实现(讲解超级详细)

    有时候想想 xff0c 国内有些资源确实比较稀缺 xff0c 但是我们一样不会落后 xff01 学习python和ROS这么久了 xff0c 一直很少去实战 xff0c 另外看到基于python编程的ROS话题通信教程实在是稀缺了 xff0
  • C#工控上位机——框架

    C 工控上位机 第一部分 xff1a UI模块 先点击一下Panel xff0c 在点击一下屏幕 先选中Panel xff0c 在进行属性设置 图标连接 嵌入式窗体 设置按键的事件 using
  • docker镜像启动es/kibana

    下载镜像elasticsearch docker search elasticsearch docker pull elasticsearch 启动镜像 docker run name my elasticsearch p 9200 920
  • 虚拟串口的使用

    虚拟串口的使用
  • 修改闭包内使用的外部变量

    修改闭包内使用的外部变量的错误示例 定义一个外部函数 def func out num1 定义一个内部函数 def func inner num2 这里本意想要修改外部num1的值 xff0c 实际上是在内部函数定义了一个局部变量num1
  • 嵌入式软件面试题

    CSDN的小伙伴们 xff0c 我是林君 今天给小伙伴们分享一些嵌入式软件开发工程师的校招面试题 企业校招对基础考察较多 其次 xff0c 在校参加的相关比赛 xff0c 项目经历 我在生病前 xff0c 面试了一周 xff0c 收到八九个
  • 嵌入式软件工程师技术等级

    1 初级 xff1a 8051或其他单片机 xff0c UCOS xff0c I C xff0c SPI xff0c UART 汇编和C语言能力一般 xff0c 系统集成能力弱 2 中级 xff1a 在初级的基础上 xff0c ARM MI
  • FreeRTOS之动态方法任务创建和删除实验

    一 实验设计 start task xff1a 用来创建其他两个任务 task1 task 当此任务运行5次就调用vTaskDelete 删除任务task2 task task2 task 此任务为普通的应用任务 一 宏定义 任务优先级 d
  • 人工智能研究主要有哪三大学派,其特点是什么?

    人工智能研究主要有哪三大学派 xff0c 其特点是什么 xff1f xff08 1 xff09 符号主义 xff1a 又称为功能模拟学派 xff0c 主要观点认为智能活动的基础是物理符号系统 xff0c 思维过程是符号模式的处理过程 其特点
  • FreeRTOS入门

    目录 一 任务要求二 FreeRTOS移植1 简介2 参考教程3 多任务程序管理实现4 执行结果 三 总结 一 任务要求 在STM32下完成一个基于FreeRTOS的多任务程序 xff0c 执行3个周期性task xff0c 具体任务不限
  • 2021年全国大学生电子设计大赛F题——智能送药小车,全方位解决方案+程序代码(详细注释)山东赛区国奖

    目录 1 赛题及硬件方案分析 xff1a 2 用到的主要器件清单 xff1a 3 各部分思路及代码实现 1 小车舵机 马达驱动 2 蓝牙通信 3 单片机与OpenMV的串口通信 4 单片机与OpenMV的通信协议 5 单片机main文件中的
  • C++学习小记之代码重用问题(1)

    C 43 43 Primer Plus第六版第14章程序清单14 2给的示例代码中有以下两段代码 xff1a double amp Student operator int i return scores i double Student
  • 出现“ ‘xxx‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件。”的一个解决方法

    XXX 不是内部或外部命令 xff0c 也不是可运行的程序或批处理文件 前提是已经安装成功某一个插件 有时候 xff0c 我们想用cmd xff08 以管理员身份运行 xff09 执行命令的时候 xff0c 总会出现 XXX 不是内部或外部
  • RK算法分析

    这一节介绍一下由Rabin和Karp提出的RK算法 1 xff0c RK算法的基本思想 HASH xff01 如果两个字符串hash后的值不相同 xff0c 则它们肯定不相同 xff1b 如果它们hash后的值相同 xff0c 它们不一定相
  • Xilinx ZYNQ FreeRTOS+Tracealyzer(移植)

    PL端配置 使用ZYNQ IP Core 打开串口 网口等所需接口 新手注意 xff1a 需要生成bit文件后 xff0c 并输出相应硬件平台 xff0c 网上教程很多 xff0c 请参考其它教程 PS端配置 1 创建任务 xff0c 注意
  • Openmv学习day2——AprilTag

    仅作为个人学习 xff0c 原文地址 xff1a 链接 link AprilTag的简介 AprilTag是一个视觉基准系统 xff0c 可用于各种任务 xff0c 包括AR xff0c 机器人和相机校准 这个tag可以直接用打印机打印出来
  • JS进行简单的表单验证(附详细代码)

    提示 xff1a 文章写完后 xff0c 目录可以自动生成 xff0c 如何生成可参考右边的帮助文档 文章目录 一 JS表单验证是什么 xff1f 一 JS表单验证需求分析 xff1f 三 表单验证所需事件设置from表单及其文本框 xff