JavaScript用正则表达式做一个提交功能

需求:
用正则表达式做一个提交功能,用户输入正确以后,提交才可以点击提交,如果不正确就禁用。
ps:这个这是一个案例提供思路的,代码很多都可以优化的。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<style type="text/css">
			#fir {
				width: 100px;

			}

			#sec {
				width: 200px;
			}

			#thir {
				width: 100px;
			}

			table tr td {
				text-align: left;
				height: 50px;
			}

			table {
				margin: auto;
			}

			.ruo,
			.zhong,
			.qiang {
				width: 19px;
				height: 19px;
				float: left;
				text-align: center;
				line-height: 19px;
				font-size: 10px;
				color: white;
			}

			.ruo {
				background-color: red;
			}

			.zhong {
				background-color: orange;
			}

			.qiang {
				background-color: green;
			}
		</style>
		<script type="text/javascript">
			window.onload = function() {
				

			function mycheck() {
				if (boo1 && boo2 && boo3 && boo4) {
					document.getElementById("mysub").disabled = false;
				} else {
					document.getElementById("mysub").disabled = true;
				}
			}
			var boo1;
			document.getElementById("loginId").onblur = function() {

				var str = this.value;
				var regLoginId = /^[a-zA-Z][a-zA-Z0-9]{5,}$/;
				if (regLoginId.test(str)) {
					var td = this.parentNode.nextSibling.nextSibling;
					td.innerHTML = "√";
					td.style.color = "green";
				} else {
					var td = this.parentNode.nextSibling.nextSibling;
					td.innerHTML = "×";
					td.style.color = "red";
					boo1 = false;
				}
				mycheck();
			}
			document.getElementById("loginId").onfocus = function() {
				boo1 = true;
				var td = this.parentNode.nextSibling;
				td.innerHTML = "";
			}
			var boo2;
			document.getElementById("loginPwd").onfocus = function() {
				boo2 = true;
			}
			document.getElementById("loginPwd").onblur = function() {
				if (level == 1) {
					boo2 = false;
				}
				mycheck();
			}
			var level = 0;
			document.getElementById("loginPwd").oninput = function() {
				level = 0;
				var reg1 = new RegExp(/\d+/);
				var reg2 = new RegExp(/[a-zA-Z]+/);
				var reg3 = new RegExp(/[\W_]+/);
				var pwd = this.value;
				if (reg1.test(pwd)) {
					level++;
				}
				if (reg2.test(pwd)) {
					level++;
				}
				if (reg3.test(pwd)) {
					level++;
				}
				switch (level) {
					case 1:
						document.getElementsByClassName("ruo")[0].style.opacity = "1";
						document.getElementsByClassName("zhong")[0].style.opacity = "0.3";
						document.getElementsByClassName("qiang")[0].style.opacity = "0.3";
						break;
					case 2:
						document.getElementsByClassName("ruo")[0].style.opacity = "0.3";
						document.getElementsByClassName("zhong")[0].style.opacity = "1";
						document.getElementsByClassName("qiang")[0].style.opacity = "0.3";
						break;
					case 3:
						document.getElementsByClassName("ruo")[0].style.opacity = "0.3";
						document.getElementsByClassName("zhong")[0].style.opacity = "0.3";
						document.getElementsByClassName("qiang")[0].style.opacity = "1";
						break;
				}
			}
			var boo3;
			document.getElementById("email").onfocus = function() {
				boo3 = true;
			}
			document.getElementById("email").onblur = function() {

				//用正则表达式的规则  和  用户输入在文本框中内容 作比较
				var regEmail = /\w[-\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\.)+[A-Za-z]{2,14}/;
				var str = this.value;
				if (regEmail.test(str)) {
					var td = this.parentNode.nextSibling.nextSibling;
					td.innerHTML = "√";
					td.style.color = "green";
				} else {
					var td = this.parentNode.nextSibling.nextSibling;
					td.innerHTML = "×";
					td.style.color = "red";
					boo3 = false;
				}
				mycheck();
			}
			var boo4;
			document.getElementById("idCard").onfocus = function() {
				boo4 = true;
			}
			document.getElementById("idCard").onblur = function() {


				var idCard = /\d{17}[\d|x]|\d{15}/;
				var str = this.value;
				if (idCard.test(str)) {
					var td = this.parentNode.nextSibling.nextSibling;
					td.innerHTML = "√";
					td.style.color = "green";
				} else {
					var td = this.parentNode.nextSibling.nextSibling;
					td.innerHTML = "×";
					td.style.color = "red";
					boo4 = false;
				}
				mycheck();
			}
			}
		</script>
	</head>
	<body>
		<form id="myform" action="#" method="get">
			<table id="frame" border="0">
				<tr>
					<td id="fir">
						请输入账号:
					</td>
					<td id="sec">
						<input type="text" name="loginId" id="loginId" />
					</td>
					<td id="thir"></td>
				</tr>
				<tr>
					<td>
						请输入密码:
					</td>
					<td>
						<input type="text" name="loginPwd" id="loginPwd" />
					</td>
					<td>
						<div class="ruo" style="opacity: 0.3;"></div>
						<div class="zhong" style="opacity: 0.3;"></div>
						<div class="qiang" style="opacity: 0.3;"></div>
					</td>
				</tr>

				<tr>
					<td>
						请输入邮箱:
					</td>
					<td>
						<input type="text" name="email" id="email" />
					</td>
					<td></td>
				</tr>

				<tr>
					<td>
						请输入身份证:
					</td>
					<td>
						<input type="text" name="idCard" id="idCard" />
					</td>
					<td></td>
				</tr>

				<tr>
					<td colspan="3">
						<input type="submit" disabled="disabled" id="mysub" value="注册" />
					</td>

				</tr>
			</table>
		</form>
	</body>
</html>

效果如图:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值