HTML简单注册界面——含表单验证[通俗易懂]

HTML简单注册界面——含表单验证[通俗易懂]最近学习HTML表单,感慨万千。虽然看起来好像不难学,但要是真自己实践起来问题却多多。这里是我写的一个简单的注册页面,只有“注册账号、密码、重输密码”三个文本框,还包含了原生JavaScript验证。(记一下,也希望能给有需要的人一点帮助。)

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

   最近学习HTML表单,感慨万千。虽然看起来好像不难学,但要是真自己实践起来问题却多多。这里是我写的一个简单的注册页面,只有“注册账号、密码、重输密码”三个文本框,还包含了原生JavaScript验证。(记一下,也希望能给有需要的人一点帮助。)

    下面直接上代码,已测试可运行,有问题可留言。

    虽然看起来代码一大段,但是主要内容不多——简单的表单内容、然后是js验证,而且是分开验证,应该比较容易懂,结合注释应该可以理解,这里就不详解了。

<!DOCTYPE html>
<html>
  <head>
    <title>8_常用注册页面的表单实例(含验证).html</title>
	
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="this is my page">
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    
    <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->

  	<style type="text/css">
		body{
			background-image: url(https://imgchr.com/content/images/system/home_cover_1552414407320_3a5f92.jpg);
			background-repeat: no-repeat;
			/* 当内容高度大于图片高度时,背景图像的位置相对于viewport固定 */    
			background-attachment: fixed;  /*此条属性必须设置否则可能无效*/    
			/* 让背景图基于容器大小伸缩 */   
			background-size: cover;  
			/* 设置背景颜色,背景图加载过程中会显示背景色 */   
			background-color: #CCCCCC;
		}
		#user_reg{
			font-family: 微软雅黑;
			font-size: 40px;
			text-align: center;
			margin-top: 200px;
		}
		form{
			width: 500px;					/*设置宽度,方便使其居中*/
			margin: 40px auto auto auto;	/*上右下左*/
			font-size: 25px;
		}
		input{
			height: 30px;
			width: 12em;
			margin-top: 5px;
			margin-bottom: 5px;
		}
		/*input标签下的属性选择器*/
		input[type="submit"],input[type="reset"]{
			height: 25px;
			width: 5em;
			margin-top: 5px;
			margin-left: 6px;
		}
	</style>
  </head>
  
  <script type="text/javascript">
	//onblur失去焦点事件,用户离开输入框时执行 JavaScript 代码:
	//函数1:验证邮箱格式
  	function validate_username(username){
  		//定义正则表达式的变量:邮箱正则
  		var emailReg=/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
  		//console.log(username);
  		if(username !="" && username.search(emailReg) != -1)
  		{
  			document.getElementById("test_user").innerHTML = "<font color='green' size='3px'>√邮箱格式正确</font>";
  		}else{
  			document.getElementById("test_user").innerHTML = "<font color='red' size='3px'>邮箱格式错误</font>";
  		}
  	}
  
 	//函数2:验证密码是否符合要求:匹配6位密码,由数字和字母组成:
  	function validate_password(password){
  		//^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6-10}$
		//测试密码:12345y
  		var passwordReg=/^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6}$/;
  		if(password != "" && password.search(passwordReg) != -1)
  		{
  			document.getElementById("test_pw").innerHTML = "<font color='green' size='3px'>√密码格式正确</font>";
  		}else{
  			document.getElementById("test_pw").innerHTML = "<font color='red' size='3px'>密码格式错误</font>";
  			alert("密码有6位,由数字和字母组成!");
  		}
  	}
  	
	//函数3:验证两次输入的密码是否一样
  	 function validate_password2(password2){
  		var password = document.getElementById("password").value;
  		//测试:console.log(password);
  		//测试:console.log(password2);
  		if (password == ""){
			document.getElementById("is_test_pw").innerHTML = "<font color='red' size='3px'>密码不为空</font>";
		}else if(password==password2){
  			document.getElementById("is_test_pw").innerHTML = "<font color='green' size='3px'>√两次输入的密码相同</font>";
  		}else{
  			document.getElementById("is_test_pw").innerHTML = "<font color='red' size='3px'>两次输入的密码不相同</font>";
  			console.log("密码有6位,由数字和字母组成!");
  		}
  	} 
  	
	//函数4:验证表单是否已经填好
  	function validate_form(){
  		var username = document.getElementById("username").value;
  		var password = document.getElementById("password").value;
  		var password2 = document.getElementById("password2").value;
  		//console.log("表单填写正确,可以正常提交!");
  	
  		//这三个,如果任何一个有问题,都返回false
  		//18128@qq.com		12345y
  		var emailReg=/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
  		var passwordReg=/^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6}$/;
  		
  		if(username != "" && emailReg.test(username)){
  			if(password !="" && passwordReg.test(password)){
  				if(password2==password){
  					alert("信息填写正确,可以正常提交!");
  					console.log("信息填写正确,可以正常提交!");
  					return true;
  				}else{
  					alert("密码不一致,提交失败,请重新填写!");
  					console.log("密码不一致,提交失败,请重新填写!");
  					return false;
  				}
  			}else{
  				alert("密码格式错误,提交失败,请重新填写!");
  				console.log("密码格式错误,提交失败,请重新填写!");
  				return false;
  			}
  		}else{
  			alert("注册的账号不符合要求,提交失败,请重新填写!");
  			console.log("注册的账号不符合要求,提交失败,请重新填写!");
  			return false;
  		}
  	}
  </script>
  
 <body>
  	<div id="user_reg">用户注册:</div>
	<form action="./servlet/RegisterServlet" method="post" name="form" >
		<table>
			<tr>
				<td>请输入账号:</td>
				<td><input type="text" id="username" name="username" placeholder="只能用邮箱注册" onblur="validate_username(this.value)"/></td>
				<td id="test_user"></td>
			</tr>
			<tr>
				<td>请输入密码:</td>
				<td><input type="password" id="password" name="password" placeholder="6位密码由数字和字母组成" onblur="validate_password(this.value)"/></td>
				<td id="test_pw"></td>
			</tr>
			<tr>
				<td>请确认密码:</td>
				<td><input type="password" id="password2" name="password2" onblur="validate_password2(this.value)" /></td>
				<td id="is_test_pw"></td>
			</tr>
			<tr>
				<td></td>
				<td ><input type="submit" id="submit_form" value="注册" onclick="return validate_form()"/>
					<input type="reset" value="重置"/>
				</td>
			</tr>
		</table>
	</form>
</body>
</html>

Jetbrains全家桶1年46,售后保障稳定

   放几张效果图吧:

HTML简单注册界面——含表单验证[通俗易懂]

HTML简单注册界面——含表单验证[通俗易懂]

HTML简单注册界面——含表单验证[通俗易懂]


2019年9月25日更新:

修改背景为在线图片,添加测试地址:https://codepen.io/yansheng836/pen/aboMEmb

截图:

HTML简单注册界面——含表单验证[通俗易懂]

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/213552.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • kotlin 使用viewStub

    kotlin 使用viewStubViewStub是一个轻量级的的View,继承于ViewGroup,没有任何尺寸,不绘制任何东西,因此绘制或者移除时更省时。(ViewStub不可见,大小为0)优点实现View的延迟加载,避免资源的浪费,减少渲染时间,在需要的时候才加载View缺点ViewStub所要替代的layout文件中不能有标签 ViewStub在加载完后会被移除,或者说是被加载进来的layout替换掉了…

    2022年6月28日
    34
  • MFC进度条学习笔记

    MFC进度条学习笔记最近工作中有使用到进度条的知识,就来学习学习这个控件~~先来看看想要达到的效果:好的,现在开始正题。我们这里的进度条,在程序里面叫做CProgressCtrl,它是继承自CWnd类的基础控件类,用来展示工作进展度。1、主线程的处理方式。1.1先给我们的控件添加一个环境变量,起个名字就叫做: CProgressCtrlm_progressCtrl;1.2接着,在对话框初始化的时…

    2022年7月27日
    20
  • C++/C与Java的区别

    C++/C与Java的区别Java是由C++发展而来的,保留了C++的大部分内容,其编程方式类似于C++。但Java的句法更清晰、规模更小、更易学。Sun公司曾对多种程序设计语言进行分析研究,取其精华去其糟粕,最终推出了Java。Java从根本上解决了C++的固有缺陷,形成了新一代面向对象的程序设计语言(当然了解决问题也是需要代价的)。一、跨平台(C\C++和Java)Java是基于JVM虚拟机的跨…

    2022年7月7日
    24
  • 最新版本git下载安装&配置教程「建议收藏」

    最新版本git下载安装&配置教程「建议收藏」原文地址https://blog.csdn.net/zx1996119/article/details/80814752下载地址:https://git-scm.com/downloads如图:这里下载完成后是酱子的如图(windows64位的)1.双击打开后,点击Next2.再次点击Next(这里我改了安装的路径)3.下图方框…

    2022年5月1日
    60
  • cacls.exe「建议收藏」

    cacls.exe「建议收藏」xpsql.cpp:错误5来自CreateProcess(第737行)怎么解决、很简单的解决方法cmd权限问题cacls.exeC:\WINdows\system32\cmd.exe/e/t/gsystem:FC:\DocumentsandSettings\Administrator>cacls.exeC:\WINdows\system32\cmd.exe…

    2025年6月13日
    2
  • golang下文件锁的使用[通俗易懂]

    golang下文件锁的使用[通俗易懂]前言题目是golang下文件锁的使用,但本文的目的其实是通过golang下的文件锁的使用方法,来一窥文件锁背后的机制。为什么需要文件锁只有多线程/多进程这种并发场景下读写文件,才需要加锁,场景1-读写并发读写并发场景下,如果不加锁,就会出现读到脏数据的情况。想象一下,读文件的进程,读到第500字节,有其它进程以覆盖写的方式向文件中写入1000字节,那读进程读到的后500字节就是脏数据。场景2-写写并发写写并发场景下,如果不加锁,假设A进程先写0-1000字节,B进程写0-900字节,以此类

    2022年6月28日
    28

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号