jQuery实现表单验证

article/2025/10/1 4:03:02

1.基于html表单,利用jQuery实现表单验证功能。

2.html基本结构和样式:
在这里插入图片描述
3.html代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"><title>美多商城-注册</title><link rel="stylesheet" type="text/css" href="css/reset.css"><link rel="stylesheet" type="text/css" href="css/main.css"><script type="text/javascript" src="js/jquery-1.12.4.min.js"></script><script type="text/javascript" src="js/register2.js"></script>
</head>
<body><div class="register_con"><div class="l_con fl"><a class="reg_logo"><img src="images/logo02.png"></a><div class="reg_slogan">商品美 · 种类多 · 欢迎光临</div><div class="reg_banner"></div></div><div class="r_con fr"><div class="reg_title clearfix"><h1>用户注册</h1><a href="#">登录</a></div><div class="reg_form clearfix"><form id='myform'><ul><li><label>用户名:</label><input type="text" name="user_name" id="user_name"><span class="error_tip">提示信息</span></li>					<li><label>密码:</label><input type="password" name="pwd" id="pwd"><span class="error_tip">提示信息</span></li><li><label>确认密码:</label><input type="password" name="cpwd" id="cpwd"><span class="error_tip">提示信息</span></li><li><label>邮箱:</label><input type="text" name="email" id="email"><span class="error_tip">提示信息</span></li><li class="agreement"><input type="checkbox" name="allow" id="allow" checked="checked"><label>同意”美多商城用户使用协议“</label><span class="error_tip2">提示信息</span></li><li class="reg_sub"><input type="submit" value="注 册" name=""></li></ul>				</form></div></div></div><div class="footer no-mp"><div class="foot_link"><a href="#">关于我们</a><span>|</span><a href="#">联系我们</a><span>|</span><a href="#">招聘人才</a><span>|</span><a href="#">友情链接</a>		</div><p>CopyRight © 2016 北京美多商业股份有限公司 All Rights Reserved</p><p>电话:010-****888    京ICP备*******8号</p></div></body>
</html>

4.jquery表单验证代码:

$(function () {// 定义开关变量var flagUser=falsevar flagPwd=falsevar flagCpwd=falsevar flagEmail=falsevar flagAllow=true// 找到所在标签元素var $user_name = $('#user_name')var $pwd=$('#pwd')var $cpwd=$('#cpwd')var $email=$('#email')var $allow=$('#allow')var $submit=$('#myform')// 1.如果失去焦点,则进行检查判断用户名是否合法$user_name.blur(function () {// 封装函数 调用函数fnCheckUser()})function fnCheckUser() {// 获取用户输入的数据var vals = $user_name.val()// 正则,正则验证用户输入的数据是否合法var re = /^\w{6,20}$/if (vals == '') {$user_name.next().show().html('用户名不能为空')flagUser=falsereturn}if (re.test(vals)) {// 合法 -- 隐藏报错信息$user_name.next().hide()flagUser=true} else {// 不合法 -- 报错 -- 下面的span标签显示$user_name.next().show().html('用户名是6-20位数字、字母和下划线!')flagUser=false}}// 2.如果密码框失去焦点,则进行检查判断密码是否合法$pwd.blur(function(){// 封装函数,调用函数fnCheckPwd()})function fnCheckPwd(){// 获取密码框输入的数据var vals=$pwd.val()// 密码正则匹配表达式var rePass = /^[\w!-@#$%^&*]{6,20}$/// 如果输入框为空,则提示不能为空并returnif (vals==''){$pwd.next().show().html('密码不能为空')flagPwd=falsereturn}// 正则验证密码输入是否合法if(rePass.test(vals)){// 如果匹配成功,则隐藏span标签$pwd.next().hide()flagPwd=true}else{// 如果匹配失败,则显示span标签,替换提示信息$pwd.next().show().html('密码是6到20位字母、数字,还可包含@!#$%^&*-字符')flagPwd=false}}// 3.判断两次输入的密码是否一致$cpwd.blur(function(){// 封装函数,调用函数fnCheckCpwd()})function fnCheckCpwd(){// 获取重复密码框输入的数据var vals=$pwd.val()var cvals=$cpwd.val()if(cvals==''){$cpwd.next().show().html('重复密码框不能为空')flagCpwd=falsereturn  }if (vals==cvals){$cpwd.next().hide()flagCpwd=true}else{$cpwd.next().show().html('两次密码输入不一致,请重新输入')flagCpwd=falsereturn}}// 4.如果邮箱框失去焦点,则进行检查判断邮箱是否合法$email.blur(function(){// 封装函数,调用函数fnCheckEmail()})function fnCheckEmail(){// 获取邮箱框输入的数据var vals=$email.val()// 邮箱正则匹配表达式var reMail = /^[a-z0-9][\w\.\-]*@[a-z0-9\-]+(\.[a-z]{2,5}){1,2}$/i// 如果输入框为空,则提示不能为空并returnif (vals==''){$email.next().show().html('邮箱不能为空')flagEmail=falsereturn}// 正则验证邮箱输入是否合法if(reMail.test(vals)){// 如果匹配成功,则隐藏span标签$email.next().hide()flagEmail=true}else{// 如果匹配失败,则显示span标签,替换提示信息$email.next().show().html('你输入的邮箱格式不正确')flagEmail=false}}// 5.点击同意协议复选框,判断是否勾选。如果勾选,则隐藏提示信息,没有勾选,则显示报错信息$allow.click(function(){fnCheckAllow()})// 封装函数function fnCheckAllow(){if($allow.prop('checked')){$allow.next().next().hide()flagAllow=true}else{$allow.next().next().show().html("请勾选同意协议")flagAllow=false}}// 6.所有输入框验证通过再提交注册$submit.submit(function(){if(flagUser && flagPwd && flagCpwd && flagEmail && flagAllow){alert('OK!')}else{alert("Not OK!")return false}})
})

5.总结归纳:

(1)jq常用的事件属性

  • ready() DOM加载完成

  • click() 鼠标单击

  • 焦点相关事件

    • blur() 元素失去焦点
    • focus() 元素获得焦点
  • 鼠标移入移出事件

    • mouseover() 鼠标进入(进入子元素也触发)
    • mouseout() 鼠标离开(离开子元素也触发)
    • mouseenter() 鼠标进入(进入子元素不触发)
    • mouseleave() 鼠标离开(离开子元素不触发)
    • hover() 同时为mouseenter和mouseleave事件指定处理函数
  • submit() 用户递交表单

    当单击表单提交按钮时触发执行submit函数

(2)正则在js的使用方法

在jQuery中,没有额外封装正则的使用方法, 用原生js实现正则

  • 正则表达式在js的两种写法:

    var re=new RegExp(‘规则’, ‘可选参数’)

    var re=**/规则/**参数

  • 正则表达式对象的使用

    正则变量.test(数据) – 验证数据是否合法

    • 合法: 返回true
    • 不合法: 返回false

http://chatgpt.dhexx.cn/article/4ypQuwjr.shtml

相关文章

JQuery-表单验证

1.什么是表单验证&#xff1f; 表单验证是javascript中的高级选项之一。 可用来在数据被送往服务器前对 HTML 表单中的这些输入数据进行验证。 2.为什么表单验证&#xff1f; 减轻服务器的压力 。 保证输入的数据符合要求。 3.案例 实现表单验证的案例在这里用GiWiFI页面…

SurfaceTexture

SurfaceTexture 类是在 Android 3.0 中引入的。就像 SurfaceView 是 Surface 和 View 的结合一样&#xff0c;SurfaceTexture 是 Surface 和 GLES texture 的粗糙结合&#xff08;有几个警告&#xff09;。 当你创建了一个 SurfaceTexture&#xff0c;你就创建了你的应用作为消…

UserWarning: findfont: Font family [‘sans-serif‘] not found. Falling back to DejaVu Sans

Python数据可视化分析时出现UserWarning: findfont: Font family [‘sans-serif’] not found. Falling back to DejaVu Sans…报错 原因&#xff1a;库中没有关于’Microsoft YaHei’的引用 换一种字体记一下 如 字体中文名称字体英文名称黑体SimHei宋体SimSun新宋体NSimSum…

The tag <fonta> is unrecognized in this browser. If you meant to render a React component, start its

写react 组件样式 styled-components 报错 是因为react 千万记住开头字母是大写 由于这个f小写了 但是这个是当成了一个组件在用 所以会一直报错 改为大写就会解决了 小伙伴们千万注意 react的项目组建开头必须大写

createfont(CreateFontIndirectW)

如何用CreateFont创建制定点大小的字符 import java.awt.Font; import java.io.File; import java.io.FileInputStream; public class Loadfont public static Font loadFont(String fontFileName, float fontSize) //第一个参数是外部字体名&#xff0c;第二个是字体大小 File…

MindFusion.WinForms Pack 2022.R2

MindFusion.WinForms Pack 2022.R2 每个节点多个标签-允许为单个流程图节点显示多个标题。您可以自定义节点标签&#xff0c;包括显示和定位。 混杂的 bhMoveLabels行为现在允许用户交互移动链接和节点标签。 水平偏移和垂直偏移现在适用于使用SetLinkLengthPosition方法定位的…

findfont: Font family [‘Times New Roman‘] not found. Falling back to DejaVu Sans.字体安装

问题描述 使用python对数据进行可视化的时候&#xff0c;matplotlib绘图的时候&#xff0c;提示警告如题所示&#xff1a; UserWarning: findfont: Font family [Times New Roman] not found. Falling back to DejaVu Sans. 环境说明&#xff1a;使用的是 CentOS系统&#xf…

Could not load file or assembly ‘office, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce11

Could not load file or assembly office, Version12.0.0.0, Cultureneutral, PublicKeyToken71e9bce11 window10 Could not load file or assembly office, Version12.0.0.0, Cultureneutral, PublicKeyToken71e9bce11 新的改变 我们对Markdown编辑器进行了一些功能拓展与语…

jasperreports6.12.2 could not load the following font解决方法

jasperreports通过Java代码生成PDF的时候不能获取中文字体&#xff0c;报错提示如下&#xff1a; net.sf.jasperreports.engine.JRRuntimeException: Could not load the following font: pdfFontName: STSong-Light pdfEncoding: Identity-H isPdfEmbedded : true本次环境&…

快速小巧的粘贴应用程序Hasty Paste

什么是 Hasty Paste? Hasty Paste 是一个快速粘贴文本并共享的地方&#xff0c;主要用于共享调试日志等&#xff0c;以帮助开发人员提供技术支持。该项目的目标是既快又小。 命令行安装 在群晖上以 Docker 方式安装。 官方的镜像没有发布在 docker hub&#xff0c;而是在 gh…

SpringBoot--解决BigDecimal传到前端后精度丢失的问题

原文网址&#xff1a;SpringBoot--解决BigDecimal传到前端后精度丢失的问题_IT利刃出鞘的博客-CSDN博客 简介 本文用示例介绍SpringBoot如何解决BigDecimal传到前端后精度丢失问题。 解决方案是&#xff1a;转成字符串格式返回。 问题描述 实例 Controller package com.…

BigDecimal 简单使用

目录 为什么使用BigDecimal 解决方案 构造方法 类型转换 double 转 BigDecimal BigDecimal 转 String BigDecimal 转 double/int/long等 加减乘除取余 divide 舍入模式 比较大小 格式化(DecimalFormat) 小结 为什么使用BigDecimal 1.float和double类型的主要设计目…

BigDecimal用法

文章目录 1、创建一个BigDecimal对象1.1、常用构造函数1.1、常用计算方法 2、BigDecimal很方便的几个用法2.1、用BigDecimal去除小数点后多余的0&#xff1a;stripTrailingZeros()2.2、BigDecimal的原值和科学计数值2.3、用BigDecimal比较大小&#xff1a;compareTo()2.4、BigD…

mysql bigdecimal查询_mysql bigdecimal

java学习:Java中的其它类 568x573 - 55KB - JPEG Java中BigDecimal类你了解多少?! 720x480 - 30KB - JPEG TypeHandlers 640x396 - 25KB - JPEG BigDecimal equals方法可能不相等 678x260 - 9KB - JPEG

BigDecimal 详解

一&#xff0c;BigDecimal的简介 Java在java.math包中提供的API类BigDecimal&#xff0c;用来对超过16位有效位的数进行精确的运算。 双精度浮点型变量double可以处理16位有效数。在实际应用中&#xff0c;需要对更大或者更小的数进行运算和处理。float和double只能用来做科学…

BigDecimal加减乘除计算

BigDecimal的运算——加减乘除 首先是bigdecimal的初始化 这里对比了两种形式&#xff0c;第一种直接value写数字的值&#xff0c;第二种用string来表示 我们对其进行加减乘除绝对值的运算,其实就是Bigdecimal的类的一些调用 BigDecimal num1 new BigDecimal(0.005);BigDecim…

java 中 BigDecimal 详解

首先&#xff0c;学习一个东西&#xff0c;我们都必须要带着问题去学&#xff0c;这边我分为 【为什么&#xff1f;】【是什么&#xff1f;】【怎么用&#xff1f;】 【为什么要用BigDecimal&#xff1f;】 首先&#xff0c;我们先看一下&#xff0c;下面这个现象 那为什么会…

Java —— JDBC关闭Statement后是否还需要关闭ResultSet?

一、问题描述 下面的代码使用了try-with-resource语法&#xff0c;会自动关闭Connection和Statement,是否还需要关闭ResultSet&#xff1f; Statement关闭后ResultSet会被回收么&#xff1f; 二、JDBC规范 JDBC规范4.3中有对Statement关闭后是否需要关闭ResultSet进行说明。…

ResultSet(结果集)、Statement

ResultSet 基本介绍&#xff1a; 1.表示数据库结果集的数据表&#xff0c;通常通过执行查询数据库的语句生成 2.ResultSet对象保持一个光标指向其当前的数据行&#xff0c;光标最初在第一行之前 3.next()方法是将光标移动到下一行&#xff0c;并且由于在ResultSet对象中没有…

【JDBC】------ResultSet(结果集)和常见异常

分享第二十条励志语句 宁可自信&#xff0c;也不要盲目悲观。因为自信是一种力量&#xff0c;即使你的自信有些盲目&#xff0c;也无关大局&#xff0c;你可以在实践中调整心态&#xff0c;找到自己的恰当的位置。如果盲目自卑&#xff0c;你就必然失去一切。 目录 分享第二十…