Javascript完成表单验证

15 篇文章 0 订阅
4 篇文章 0 订阅

我来了!
在这里插入图片描述

javascript表单验证完成以下目标
  1. 用户名不能为空。
  2. 用户名必须在6-14位之间。
  3. 用户名只能有数字和字母组成,不能含有其它符号(正则表达式)。
  4. 密码和确认密码一致,邮箱地址合法。
  5. 统一失去焦点验证。
  6. 错误提示信息统一在span标签中提示,并且要求字体12号,红色。
  7. 文本框再次获得焦点后,清空错误提示信息,如果文本框中数据不合法要求清空文本框的value。
  8. 最终表单中所有项均合法方可提交。
编写email的正则:emailRegExp = /^\w+([-+.]\w+)@\w+([-.]\w+).\w+([-.]\w+)*$/
用户名的正则:regExp = /^ [A-Za-z0-9]+$/
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>表单验证</title>
		<style type="text/css">
			span {
				color: red;
				font-size: 12px;
			}
		</style>
	</head>
	<body>
		<script type="text/javascript">
		   window.onload = function(){
			   // 获取username的span标签
			   var usernameErrorSpan = document.getElementById("usernameError");
			   // 给用户名文本框绑定blur事件
			   var usernameElt = document.getElementById("username");
			   usernameElt.onblur = function(){
				   // 获取用户名
				   var username = usernameElt.value;
				   // 去除前后空白
				   username = username.trim();
				   if(username === ""){
					   // 用户名为空
					   usernameErrorSpan.innerText = "用户名不能为空";
				   }else{
					   // 用户名不为空
					   // 继续判断长度[6-14]
					   if(username.length < 6 || username.length > 14){
						   // 用户名长度非法
						   usernameErrorSpan.innerText = "用户名长度必须在[6-14]之间";
					   }else{
						   var regExp = /^[A-Za-z0-9]+$/;
						   var ok = regExp.test(username);
						   if(ok){
							   // 用户名最终合法
						   }else{
							   // 用户名中含有特殊符号
							   usernameErrorSpan.innerText = "用户名只能由数字和字母组成";
						   }
					   }
				   }
			   }
			   
			   // 给username这个文本框绑定获得焦点事件
			   usernameElt.onfocus = function(){
				   // 清空非法的value
				   if(usernameErrorSpan.innerText != ""){
					   usernameElt.value = "";   
				   }
				   // 清空span
				   usernameErrorSpan.innerText = "";
			   }
			   
			   // 获取密码错误提示的span标签
			   var pwdErrorSpan = document.getElementById("pwdError");
			   // 获取确认密码框对象
			   var userpwd2Elt = document.getElementById("userpwd2");
			   // 绑定blur事件
			   userpwd2Elt.onblur = function(){
				   // 获取密码和确认密码
				   var userpwdElt = document.getElementById("userpwd");
				   var userpwd = userpwdElt.value;
				   var userpwd2 = userpwd2Elt.value;
				   if(userpwd != userpwd2){
					   // 密码不一致
					   pwdErrorSpan.innerText = "密码不一致";
				   }else{
					   // 密码一致
				   }
			   }			   
			   // 绑定focus事件
			   userpwd2Elt.onfocus = function(){
				   if(pwdErrorSpan.innerText != ""){
					   userpwd2Elt.value = "";
				   }
				   pwdErrorSpan.innerText = "";
			   }
			   
			   // 获取email的span
			   var emailSpan = document.getElementById("emailError");
			   // 给email绑定blur事件
			   var emailElt = document.getElementById("email");
			   emailElt.onblur = function(){
				   // 获取email
				   var email = emailElt.value;
				   var emailRegExp = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
				   var ok = emailRegExp.test(email);
				   if(ok){
					   // 合法
				   }else{
					   // 不合法
					   emailSpan.innerText = "邮箱地址不合法";
				   }
			   }
			   
			   // 给emailElt绑定focus
			   emailElt.onfocus = function(){
				   if(emailSpan.innerText != ""){
					   emailElt.value = "";
				   }
				   emailSpan.innerText = "";
			   }
			   
			   // 给提交按钮绑定鼠标单击事件
			   var submitBtnElt = document.getElementById("submitBtn");
			   submitBtn.onclick = function(){
				   usernameElt.focus();
				   usernameElt.blur();
				   
				   userpwd2Elt.focus();
				   userpwd2Elt.blur();
				   
				   emailElt.focus();
				   emailElt.blur();
				   
				   // 当所有表单项都是合法的时候,提交表单
				   if(usernameErrorSpan.innerText == "" && pwdErrorSpan.innerText == "" && emailSpan.innerText == ""){
					   // 获取表单对象
					   var userFormElt = document.getElementById("userForm");
					   // 设置action
					   userFormElt.action = "http://localhost:8080/jd/save";
					   // 提交表单
					   userFormElt.submit();
				   }
			   }
		   }
		</script>
		<form id="userForm" method="get">
			用户名<input type="text" name="username" id="username"/><span id="usernameError"></span><br>
			密码<input type="text" name="userpwd" id="userpwd"/><br>
			确认密码<input type="text" id="userpwd2" /><span id="pwdError"></span><br>
			邮箱<input type="text" name="email" id="email" /><span id="emailError"></span><br>
			<!-- <input type="submit" value="注册" /> -->
			<input type="button" value="注册" id="submitBtn"/>
			<input type="reset" value="重置" />
		</form>
		
	</body>
</html>

完成的部分截图
在这里插入图片描述

在这里插入图片描述

好的,以下是使用Javascript完成表单验证及定时器的使用代码的示例: ```javascript // 获取表单元素 const form = document.querySelector('form'); const usernameInput = document.querySelector('#username'); const passwordInput = document.querySelector('#password'); const confirmPasswordInput = document.querySelector('#confirm-password'); // 设置定时器 let timer = null; // 验证函数 function validateForm() { // 获取输入框的值 const username = usernameInput.value; const password = passwordInput.value; const confirmPassword = confirmPasswordInput.value; // 判断输入框是否为空 if (!username) { alert('用户名不能为空'); return false; } if (!password) { alert('密码不能为空'); return false; } if (!confirmPassword) { alert('确认密码不能为空'); return false; } // 判断密码是否一致 if (password !== confirmPassword) { alert('两次输入的密码不一致'); return false; } // 表单验证通过 alert('表单验证通过'); return true; } // 给表单元素绑定提交事件 form.addEventListener('submit', function(event) { // 阻止表单默认提交行为 event.preventDefault(); // 清除定时器 clearInterval(timer); // 调用验证函数 validateForm(); }, false); // 给密码输入框绑定输入事件 passwordInput.addEventListener('input', function(event) { // 清除定时器,避免连续请求 clearInterval(timer); // 设置定时器,延迟500毫秒请求 timer = setTimeout(function() { // 发送请求 fetch('/validate-password', { method: 'POST', body: JSON.stringify({ password: event.target.value }), headers: { 'Content-Type': 'application/json' } }) .then(function(response) { return response.json(); }) .then(function(data) { // 根据返回结果给出提示 if (data.valid) { alert('密码强度合格'); } else { alert('密码过于简单'); } }) .catch(function(error) { console.error(error); alert('请求失败,请重试'); }); }, 500); }, false); ``` 以上代码可以完成基本的表单验证和密码强度检测功能。需要注意的是,该示例中的 '/validate-password' 接口需要自行实现。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值