JavaScript笔记05

表单验证

<!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">
			/* 
				1.用户名不能为空
				2.用户名必须在6-14位之间
				3.用户名只能由数字和字母组成,不能含有其他符号(正则表达式)
				4.密码和确认密码一致,邮箱地址合法
				5.统一失去焦点验证
				6.错误提示信息统一在span标签中提示,并且要求字体12号,红色
				7.文本框再次获得焦点后,清空错误提示信息,如果文本框中的数据不合法,要求清空文本框的value
				8.最终表单中所有项均合法方可提交
			 */
			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();
					//判断用户名是否为空
					/* 
					方式1
					if(username){
						//代表username不是空字符串
						alert("username" + username);
					}else{
						//代表username是空字符串
						alert("username是空字符串");
					} */
					
					//方式2
					//if(username.length == 0){}
					
					//方式3
					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;
					//编写email的正则表达式
					var emailRegExp = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
					var ok = emailRegExp.test(email);
					if(ok){
						//合法
					}else{
						//不合法
						emailSpan.innerText = "地址邮箱不合法";
					}
				}
				
				//给emailElt绑定onfocus
				emailElt.onfocus = function(){
					if(emailSpan.innerText != ""){
						emailElt.value = "";
					}
					emailSpan.innerText = "";
				}
				
				//给提交按钮绑定鼠标单机事件
				var submitBtnElt = document.getElementById("submitBtn");
				submitBtn.onclick = function(){
					//触发username的blur userpwd2的blur email的blur
					//不需要人工操作,使用js代码触发事件
					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>
		
		<!-- 这个表单提交应该使用post,这里为了检测,所以使用get -->
		<form method="get" id="userForm">
			用户名<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>

复选框全选和取消全选

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>复选框的全选和取消全选</title>
	</head>
	<body>
		<script type="text/javascript">
			/* window.onload = function(){
				var firstChk = document.getElementById("firstChk");
				firstChk.onclick = function(){
					//获取第一个复选框的选中状态(复选框对象checkbox对象)
					//根据name获取所有元素
					var aihaos = document.getElementsByName("aihao");
					if(firstChk.checked){
						//全选
						for(var i = 0; i < aihaos.length; i++){
							aihaos[i].checked = true;
						}
					}else{
						//取消全选
						for(var i = 0; i < aihaos.length; i++){
							aihaos[i].checked = false;
						}
					}
				}
			} */
			//简写
			window.onload = function(){
				var aihaos = document.getElementsByName("aihao");
				var firstChk = document.getElementById("firstChk");
				firstChk.onclick = function(){
					for(var i = 0; i < aihaos.length; i++){
						aihaos[i].checked = firstChk.checked;
					}
				}
				
				//对以上数组进行遍历
				var all = aihaos.length;
				for(var i = 0; i < aihaos.length; i++){
					aihaos[i].onclick = function(){
						var checkedCount = 0;
						//总数量和选中的数量相等的时候,第一个复选框选中
						for(var i = 0; i < aihaos.length; i++){
							if(aihaos[i].checked){
								checkedCount++;
							}
						}
						firstChk.checked = (all == checkedCount);
						/* if(all == checkedCount){
							firstChk.checked = true;
						}else{
							firstChk.checked = false;
						} */
					}
				}
			}
		</script>
		<input type="checkbox" id="firstChk"/>全选<br>
		<input type="checkbox" name="aihao" value="smoke" />抽烟<br>
		<input type="checkbox" name="aihao" value="drink" />喝酒<br>
		<input type="checkbox" name="aihao" value="tt" />烫头<br>
	</body>
</html>

获取下拉列表选中项的value

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>获取下拉列表选中项的value</title>
	</head>
	<body>
	<!-- 
		<select οnchange="alert(this.value)">
			<option value="">--请选择省份--</option>
			<option value="001">河北省</option>
			<option value="002">河南省</option>
			<option value="003">山东省</option>
			<option value="004">山西省</option>
		</select>
	-->
	<!-- 第二种方法 -->
	<script type="text/javascript">
		window.onload = function(){
			var provinceListElt = document.getElementById("provinceList");
			provinceListElt.onchange = function(){
				//获取选中项的value
				alert(provinceListElt.value);
			}
		}
	</script>
	<select id="provinceList">
		<option value="">--请选择省份--</option>
		<option value="001">河北省</option>
		<option value="002">河南省</option>
		<option value="003">山东省</option>
		<option value="004">山西省</option>
	</select>
	</body>
</html>

周期函数setinterval

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>显示网页时钟</title>
	</head>
	<body>
		<script type="text/javascript">
			/* 
				关于js内置的支持类:Date,可以用来获取时间/日期
			 */
			//获取系统当前时间
			var nowTime = new Date();
			//输出
			//document.write(nowTime);//Sun Jan 03 2021 16:17:08 GMT+0800 (中国标准时间)
			//转换成具有本地语言环境的日期格式
			nowTime = nowTime.toLocaleString();
			document.write(nowTime);//2021/1/3 下午4:18:53
			document.write("<br>");
			document.write("<br>");
			//document.write相当于Java的System.out.println();
			
			//当以上格式不是自己想要的,可以通过日期获取年月日等信息,自定制日期格式
			var t = new Date();
			var year = t.getFullYear();//返回年信息,以全格式返回
			var month = t.getMonth();//月份是:0-11
			//var dayfWeek = t.getDay();//获取的一周的第几天(0-6)
			var day = t.getDate();//获取日信息
			document.write(year + "年" + month + "月" + day + "日");//2021年0月3日
			document.write("<br>");
			document.write("<br>");
			
			//重点:怎么获取毫秒数(从1970年1月1日 00:00:00 000到当前系统时间的总毫秒数)
			//var times = t.getTime();
			//document.write(times);//一般会使用毫秒数当时间戳(timestamp)
			//简写
			document.write(new Date().getTime());
		</script>
		
		<script type="text/javascript">
			function displayTime(){
				var time = new Date();
				var strTime = time.toLocaleString();
				document.getElementById("timeDiv").innerHTML = strTime;
			}
			//每隔1秒调用displayTime()函数
			function start(){
				//从这行代码执行结束开始,则会不间断的,每隔1000毫秒调用1次displayTime()函数
				v = window.setInterval("displayTime()",1000);
			}
			
			function stop(){
				window.clearInterval(v);
			}
		</script>
		<br><br>
		<input type="button" value="显示系统时间" onclick="start();" />
		<input type="button" value="系统时间停止" onclick="stop();" />
		<div id="timeDiv"></div>
	</body>
</html>

内置支持类Array

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>内置支持类Array(了解即可)</title>
	</head>
	<body>
		<script type="text/javascript">
			//创建长度位0的数组
			var arr = [];
			alert(arr.length);//0
			//数据类型随意
			var arr2 = [1,2,3,false,"abc",3.14];
			alert(arr2.length);//6
			
			//下标会越界吗?
			arr2[7] = "test";
			document.write("<br>");
			//遍历
			for(var i = 0; i < arr2.length; i++){
				document.write(arr2[i] + "<br>");
			}
			/* 
			 1
			 2
			 3
			 false
			 abc
			 3.14
			 undefined
			 test
			 */
			document.write("<br>");
			
			//另一种创建数组对象的方式
			var a = new Array();
			alert(a.length);//0
			
			var a2 = new Array(3);//3表示长度
			alert(a2.length);
			
			var a3 = new Array(3,2);
			alert(a3.length);//2
			
			var a4 = [1,2,3,9];
			var str = a4.join("-");
			alert(str);//1-2-3-9
			
			//在数组末尾添加一个元素(数组长度+1)
			a4.push(10);
			alert(a4.join("-"));
			
			//将数组末尾的元素弹出
			var endElt = a4.pop();
			alert(endElt);
			alert(a4.join("-"));
			
			//注意:js中的数组可以自动模拟栈数据结构:后进先出,先进后出
			
			//反转数组
			a4.reverse();
			alert(a4.join("="));
		</script>
	</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值