javascript实现较全功能注册表单

article/2025/9/23 21:15:30

今天笔者仿照京东注册表单,进行设计了一个表单案例,在这个案例中,可以完成常见表单注册的绝大部分功能,比如表单注册信息的验证,校验用户名,校验密码强弱,注册信息的追踪。这其中用到了正则表达式,表单脚本的相关知识点。
请先看效果图:
这里写图片描述
笔者在这里仅对案例中主要代码进行讲解,读者可以下拉到本博客最后,点击链接进行下载案例全部资源。
这里页面的html代码和css代码不在这里列出,仅就javascript相关知识点进行分析。
在对表单注册信息进行验证的时候需要用到正则表达式对表单信息进行匹配验证,以满足注册条件。下面这段代码就是正则表达式的相关代码,仅供参考:

var regExpManger = {userNameReg:/^([\u4e00-\u9fa5]|\w|-)+$/, //用户名正则表达式regNum : /\d+/,          regWord : /[a-zA-Z]+/,      regOther : /[^\da-zA-Z]+/,emailReg: /^\w+@\w+(\.com)+$/,mobilReg: /^[1]\d*$/
}

知识是活的,以上表达式仅供参考。读者看了会感到疑惑,不用担心,请根据下面的代码进行了解领悟。
下面这段代码是对注册信息进行验证的,由于每条验证信息代码相似,这里笔者仅就用户名和注册密码进行讲解,请看代码:

var userName = document.getElementById("userName");//获取用户名节点对象
var userPwd = document.getElementById("userPwd");//获取密码节点对象
var confirmPwd = document.getElementById("confirmPwd");//获取确认密码节点对象
var email = document.getElementById("email");//获取邮箱节点对象
var mobile = document.getElementById("mobile");//获取手机号节点对象
var code = document.getElementById("code");//获取验证码节点对象
var agreement = document.getElementById("agreement");//获取协议节点对象
var btn = document.getElementById("btn");//获取注册按钮节点对象
var verifyCode = document.getElementById("verifyCode");//获取生成的验证码节点对象/*----------------------------校验用户名----------------------------*/
function checkUserName (e) {var _e = window.event || e;var box = userName.parentNode;//获取父节点var remind = box.nextElementSibling;//下一个兄弟节点var span = remind.lastElementChild;//获取remind中的span节点var v = userName.value;/*获取焦点*/if(_e){if(_e.type =="focus"){if(v.length == 0){box.className = "box";remind.className = "remind default";span.innerHTML = "支持汉字、字母、数字、-、_的组合,4-20个字符";return false;}}if(_e.type == "blur"){if(v.length == 0){box.className = "box";remind.className = "remind hide";return false;}}}/*其他事件*/if(v.length == 0){box.className = "box error";remind.className = "remind error";span.innerHTML = "请输入用户名";return false;}else{if(regExpManger.userNameReg.test(v)){if(v.length>=4 && v.length<=20){box.className = "box right";remind.className = "remind hide";return true;}else{box.className = "box error";remind.className = "remind error";span.innerHTML = "长度4-20个字符";return false;}}else{box.className = "box error";remind.className = "remind error";span.innerHTML = "格式错误,仅支持汉字、字母、数字、-、_的组合,4-20个字符";return false;}}
}
userName.onfocus = checkUserName;//获得焦点
userName.onblur = checkUserName;//失去焦点
userName.onkeyup = checkUserName;//按键弹起/*----------------------------校验密码----------------------------*/
function checkPwd (e) {var _e = window.event || e;var box = userPwd.parentNode;//获取父节点var remind = box.nextElementSibling;//下一个兄弟节点var span = remind.lastElementChild;//获取remind中的span节点var v = userPwd.value;/*获取焦点*/if(_e){if(_e.type =="focus"){if(v.length == 0){box.className = "box";remind.className = "remind default";span.innerHTML = "建议使用数字、字母和符号两种以上的组合,6-20个字符";return false;}}if(_e.type == "blur"){if(v.length == 0){box.className = "box";remind.className = "remind hide";return false;}}}/*其他事件*/if(v.length == 0){box.className = "box error";remind.className = "remind error";span.innerHTML = "请输入密码";return false;}else{/*验证密码长度和安全等级*/if(v.length>=6 && v.length<=20){box.className = "box right";var level = 0;if(regExpManger.regNum.test(v)){level++;}if(regExpManger.regWord.test(v)){level++;}if(regExpManger.regOther.test(v)){level++;}switch(level){case 1:remind.className = "remind ruo";span.innerHTML = "密码强度弱";break;case 2:remind.className = "remind zhong";span.innerHTML = "密码强度中";break;case 3:remind.className = "remind qiang";span.innerHTML = "密码强度强";break;default:remind.className = "remind ruo";span.innerHTML = "密码强度弱";}return true;}else{box.className = "box error";remind.className = "remind error";span.innerHTML = "密码长度不符合";return false;}}
}
userPwd.onfocus = checkPwd;//获得焦点
userPwd.onblur = checkPwd;//失去焦点
userPwd.onkeyup = checkPwd;//按键弹起

读者可以看出,校验用户名和校验密码代码差别并不是很大,其他信息的校验和校验用户名非常相似,所以笔者并没有全部列出。onfocus和onblur是表单操作常用的属性,分别表示获取焦点和失去焦点的操作。
下面请读者看一下生成验证码的代码,实际的网页中,验证码是由后台数据库生成的,笔者在这里只是进行一个模拟,供读者参考。请看代码:

var verifyCode = document.getElementById("verifyCode");
var codeNum = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z",
"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z",
"0","1","2","3","4","5","6","7","8","9"];
function randomNum(){var str = "";for(var i=0; i<5; i++){var index = parseInt(Math.random()*codeNum.length);str = str + codeNum[index];}verifyCode.innerHTML = str;
}
randomNum();
verifyCode.onclick = function(){randomNum();
}

代码中的关键点是用到了Math.random()方法,用于生成随机数,parseInt(Math.random()*codeNum.length)这句代码就是随机生成codeNum中的一个下标,借此来调用其中的字母和数字。

/*----------------------------点击注册按钮----------------------------*/
btn.onclick = function(){var agreeBox = agreement.parentNode;var remind = agreeBox.nextElementSibling;var span = remind.lastElementChild;if(agreement.checked){agreeBox.className = "agreeBox";remind.className = "remind hide";if(checkUserName()&&checkPwd()&&checkConfirmPwd()&&checkEmail()&&checkMobile()&&checkCode()){location.href="index.html";}}else{agreeBox.className = "agreeBox error";remind.className = "remind error";span.innerHTML = "请同意协议";return false;}
}

最后,让读者了解一下按钮点击的相关代码,上述代码中有一个条件语句,条件是各个函数表达式都为真才执行代码,这就起到了表单验证追踪 追踪的作用,当用户没有填写注册信息直接点击注册按钮时,就会在相关的表单下出现提示信息。
最后,附上本案例完整资源下载链接:
注册表单完整资源下载


http://chatgpt.dhexx.cn/article/oxXlFoTm.shtml

相关文章

HTML5实现注册表单

注册表单代码 <!DOCTYPE html> <html><head><meta charset"utf-8" /><title>注册账号</title></head><body><form action"getSend.php" method"GET"><fieldset><legend>注册…

JQuery用户注册表单验证

使用jquery编写代码实现用户注册表单的验证功能&#xff1a; 用户名、密码、确认密码和手机号不能为空密码长度在8~20位之间&#xff0c;密码至少由数字、字母或下划线其中两种组成确认密码必须和密码一致手机号应该是11位&#xff0c;并且是合法的手机号段验证码随机生成&…

jQuery简单的注册表单

注册表单的实现思想及步骤 明确自己需要收集的注册信息并在Html上写出表单的布局在js上进行数据接收和验证&#xff0c;向服务器发起注册请求&#xff0c;处理请求返回的数据。 代码实现 html代码 <form><div><span>用户名&#xff1a;</span><…

Web实现:简单的注册表单

Web实现&#xff1a;简单的注册表单。 结果图如下&#xff1a; HTML部分代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, i…

【HTML】-- 用户注册表单

【HTML】-- 用户注册表单 使用html标签做一个简单的注册表单&#xff0c;下面是一些常用的标签。 button标签&#xff1a;普通按钮&#xff0c;功能代码自定义。 submit&#xff1a;“确定” &#xff0c;提交到后台。 reset&#xff1a;“取消” &#xff0c;让表单控件原内容…

前端学习笔记--注册表单

表单在网页中主要负责数据采集功能html中使用form标签完成。表单标签其实是一组标签的组合&#xff0c;不是一个标签。表单元素是允许用户在表单中&#xff08;比如&#xff1a;输入框、文本域、下拉列表、单选框、复选框等等&#xff09;输入信息的元素。 在html中使用来定义…

表单的学习——简单的注册窗口

1.表单form&#xff08;formtab&#xff09; 我们要利用制作一个简单的注册页面。代码如下&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>表单</title> </head> <body…

web前端学习(四)——HTML 表单(1)- 用户注册表单举例

表单&#xff1a;就是类似于登录界面&#xff0c;用于接收用户的信息。&#xff08;如下图的微博登录界面所示&#xff09; 表单以<form>开始&#xff0c;以</form>结束。 1、表单有什么用&#xff1f; 收集用户信息。表单展现之后&#xff0c;用户填写表单…

注册表单 html+css

简洁注册表单 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>注册</title><link rel"stylesheet" href"public.css"><link rel"stylesheet" href&quo…

linux系列之常用运维命令整理笔录

系列博客专栏&#xff1a; JVM系列博客专栏SpringBoot系列博客 本博客记录工作中需要的linux运维命令&#xff0c;大学时候开始接触linux&#xff0c;会一些基本操作&#xff0c;可是都没有整理起来&#xff0c;加上是做开发&#xff0c;不做运维&#xff0c;有些命令忘记了&…

50个Linux常用命令

1.查看主机名:hostname 2.查看当前工作目录:pwd 3.切换工作目录:cd 4.查看目录: ls -l 长格式 -a全部显示 -d显示目录属性 -h人性化 -R递归显示 5.查看系统版本 lsb_release -a 6.查看cpu cat/cpu/cpuinfo 7.查看内存 cat/proc/meminfo 8.关机 shutdown -h now 、poweroff 、…

linux下解压gz文件夹提示格式不对,在Linux解压tar.gz文件时提示gzip:stdin:not的解决问题...

不经意间我们又来到了Linux系统文章的学习&#xff0c;在众多学习中&#xff0c;我们的文章也许不起眼&#xff0c;但是想必大家都有很多问题吧&#xff0c;所以重要的下面我们就来讲解一下&#xff0c;大家一定要认真看奥&#xff01;&#xff01; 我们都知道Linux系统下的tar…

Red Hat Linux Shell命令

文章目录 一、辅助快捷键二、基本命令三、用户命令四、关于文件目录的命令五、压缩文件命令六、安装命令五、网络 “-”&#xff1a;引导短格式选项&#xff08;单个字符&#xff09;如&#xff1a;-l多个短格式选项可以写在一起&#xff0c;用一个"-"引导 如&#x…

Linux常用命令/查找/搜索命令/压缩/解压命令网络命令

在线课堂&#xff1a;https://www.100ask.net/index&#xff08;课程观看&#xff09; 论  坛&#xff1a;http://bbs.100ask.net/&#xff08;学术答疑&#xff09; 开 发 板&#xff1a;https://100ask.taobao.com/ &#xff08;淘宝&#xff09;      https://weid…

linux tar -czvf 详解,Linux tar命令详解

当你想要压缩一大堆文件时,你得先将这一大堆文件先打成一个包(tar命令),然后再用压缩程序进行压缩(gzip bzip2命令) tar常见命令参数 必要参数有如下: -A 新增压缩文件到已存在的压缩 -c 建立新的压缩文件 -d 记录文件的差别 -r 添加文件到已经压缩的文件 -u 添加改变了和现…

Java中几种常量池(字符串常量池, Class常量池, 运行时常量池)的区别与联系

简介&#xff1a; 这几天在看Java虚拟机方面的知识时&#xff0c;看到了有几种不同常量池的说法&#xff0c;然后我就去CSDN、博客园等上找资料&#xff0c;里面说的内容真是百花齐放&#xff0c;各自争艳&#xff0c;因此&#xff0c;我好好整理了一下&#xff0c;将我自认为…

Java字符串常量池详解(StringTable)

前言&#xff1a;在介绍字符串常量池之前&#xff0c;我们先来简单了解下Java中字符串的概念以及常见的一些问题. 参考书籍&#xff1a; 《Java核心技术》 参考网站&#xff1a;牛客 作者水平很有限&#xff0c;如果发现错误&#xff0c;麻烦及时告知作者哦&#xff01;十分感谢…

java常量池在哪里_java常量池在哪?有什么用处?

为了更方便的使用对象&#xff0c;常量池是我们需要了解的必要一环&#xff0c;下面来看看常量的用处及它的存放地点。 Java常量池存放地点在哪? 如图&#xff1a; 在Java6和6之前&#xff0c;常量池一般是存放在方法区中的&#xff0c;到了Java7&#xff0c;常量池就被存放到…

Java常量池理解

Java常量池理解 常量池分为两种&#xff1a;静态常量池和运行时常量池。 静态常量池 每个类在编译之后都会生成class文件&#xff0c;而class文件中就包含有静态常量池&#xff0c;分析class文件&#xff0c;如下图所示&#xff1a; 由于常量池中的常量的数量不是固定的&…

Java 常量池详解(二)class文件常量池 和 Java 常量池详解(三)class运行时常量池

Java 常量池详解&#xff08;一&#xff09;字符串常量池 2.class文件常量池&#xff08;class constant pool&#xff09; 产生时机&#xff1a;当java文件被编译成class文件之后&#xff0c;就会生成class常量池&#xff0c;跟jvm 无关系 常量池主要存放两大类常量&#xff…