表单验证和表单提交

用户注册时,对输入的数据进行前台校验,防止数据错误和丢失
表单验证一般都结合js事件和函数,还有正则表达式总和运用
表达验证规则:
form标签,创建表单
属性有
action:提交表单到哪个地方
label:方便用户点击表单元素
for:要和表单的元素id一样
onsubmit:必须写,表单重点
写法:οnsubmit=“return 函数名()”
onsubmit需要接受函数的返回值,true表单会提交
,false不会提交
所以函数里面必须要写return false/true,表示表单是否提交成功
表单案列

<!DOCTYPE html>
<html>

	<head>
		<meta charset="UTF-8">
		<title></title>
		<style>
			td {
				background-color: aliceblue;
			}	
			input {
				background-color: deepskyblue;
				color: white;
			}
		</style>
	</head>
	<body>
		<table>
			<tr>
				<td>
					<form action="task01_jump.html" onsubmit="return checked()">
						<p>请输入你的名字</p>
						<input type="text" id="name" />
						<p>请输入你的密码</p>
						<input type="password" id="pwd" />
						<p>再次输入密码确认</p>
						<input type="password" id="pwdreturn" />
						<p>性别:<label><input type="radio" name="sex" checked="checked" /></label><label><input type="radio" name="sex"/><label></p>
						<p>年龄:<select name="" id="years">
						<option value="2019">2019</option>
								</select>
						<select name="" id="months">
							<option value="" >10</option>
						</select>
						<select name=""id="dates">
							<option value="" >18</option>
						</select>
						</p>
						<p>职业: <label><input type="checkbox" />工人</label><label><input type="checkbox" />老师</label></p>
						<p>请输入你的邮箱地址</p>
						<input type="text" id="email"/>
						<p>请输入你的手机号码</p>
						<input type="text" id="iphone"/><br />
						<input type="submit" value="注册" id="btn"/>
					</form>
				</td>
				<td>
					<img src="../img/Img314235964.jpg" style="max-width: 100%;height:auto; float: left;" />
				</td>
			</tr>
		</table>
	</body>\
	<script type="text/javascript">
		function $(id) {
			return document.getElementById(id);
		}
		var oname=$("name");
		var reg_name = /^[a-zA-Z_$]\w{5}/;
		var opwdreturn = $("pwdreturn");
		var reg_pwd=/\w{6}/;
		var opwd = $("pwd");
		var oyears=$("years");
		var reg_years=/^[16-99]$/;
		var omonths=$("months");
		var odates=$("dates");
		var oemail=$("email");
		var reg_email=/^\w{3,}@[a-z0-9]+\.[a-z]{3}(\.[a-z]{2})?$/;
		var oiphone=$("iphone");
		var reg_iphone=/^1\d{10}$/;
		var obtn=$("btn");
		var flag1=true;
		var flag2=true;
		var flag3=true;
		function checked(){
			var oname = $("name"); 
			if(oname.value == '') {
				alert("用户名不能为空");
				oname.focus();
				return false;
			}
			if(!reg_name.test(oname.value)){
				alert("用户名至少6位,以字母、下划线、$开头,后接数字");
				oname.focus();
				return false;
			}
			if(opwd.value == '') {
				alert("密码不能为空");
				opwd.focus();
				return false;
			}
			if(!reg_pwd.test(opwd.value)) {
				alert("密码至少6位")
				opwd.focus();			
				return false;
			}
//			if(opwdreturn.value==''){
//				alert("")
//				opwdreturn.focus();
//				return false;
//			}
			if(opwdreturn.value!=opwd.value){
				alert("两次密码输入不一致")
				opwdreturn.focus();
				return false;
			}
			if(oemail.value==''){
				alert("邮箱地址不能为空")
				oemail.focus();
				return false;
			}
			if(!reg_email.test(oemail.value)){
				alert("邮箱输入有误");
				oemail.focus();
				return false;
			}
			if(oiphone.value==''){
				alert("手机号码不能为空");
				oiphone.focus();
				return false;
			}
			if(!reg_iphone.test(oiphone.value)){
				alert(" 以1开头,必须是11位数字");
				oiphone.focus();
				return false;
			}
			return true;
		}
		oyears.onfocus=function(){
			if(flag1){
				for (var i = 0; i <100; i++) {
					var num=1920;
					var all=document.createElement("option");
					num+=i;
					all.innerHTML=num;
					oyears.appendChild(all);
				}
				return flag1=false;
			}		
		}
		omonths.onfocus=function(){
			if(flag2){
				for (var i = 0; i < 12; i++) {
					var num=1;
					var all=document.createElement("option");
					num+=i;
					all.innerHTML=num;
					omonths.appendChild(all);
				}
				return flag2=false;
			}
			
		}
		odates.onfocus=function(){
			if(flag3){
				for (var i = 0; i <30; i++) {
					var num=1;
					var all=document.createElement("option");
					num+=i;
					all.innerHTML=num;
					odates.appendChild(all);
				}
				return flag3=false;
			}
		}
	</script>
</html>
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值