这是在经过断断续续学习html、css和js后,写的第一个算是比较完善,依然比较初级的小案例,用户注册界面,其中用的html以及css知识都比较少,主要是js代码中各种【验证功能】实现。 html部分:标题+form表单+table表格的运用。另外在head部分写入少量的css样式,以及部分js代码。该页面并没有连接数据库对数据进行提交处理。 下图就是完成界面展示。 用户在注册时,按照要求即可注册,分别需要填写用户名、密码、确认、邮箱、手机号、性别、爱好、籍贯、个人介绍、以及验证码、是否同意本公司协议,除了个人介绍可以不用填写外。其他都需要进行填写或则选择,只有这些都选择过后才能够点击注册按钮,否则注册按钮为不可读属性,此外验证码需要在页面加载时就进行实现,通过onload属性即可完成。如图所示: 其中如红色提示等信息提示,是在各种input、select标签后添加span标签,在标签中能够填充其他展示内容。 每当用户填写一个数据,点击其他地方时,就会触发失去焦点事件,“onblur”,这个input的属性在这个案例中应用十分重要! 每当失去焦点,就要触发onblur所代表的函数或者事件。 这些事件大多数都是验证事件! 验证事件的实现步骤为: 1.建立函数 2.获取用户输入或选择的信息 3.创建校验规则(符合条件的是特殊的,不符合条件则有各种各样的情况,因此设定条件反而会更简单些) 4.获取span对象 5.开始校验(校验情况分3中,当用户输入为空值、当用户输入符合条件、用户输入不符合条件) 6.输出校验结果 在对几个信息进行校验后,就能够发现代码充裕率比较高,因此可以进行【封装校验】,设定一个函数,传递要校验的id、相应的校验规则,输出结果进行一定的变更即可,相应id的value+“通过”或者“不通过”即可。 因此在设定span的id时,同一设定为“**Span”,比如用户名id=“uname”,则span的id=“unameSpan”。 在爱好选择中,则需要对每一个爱好的选择进行事件触发。一旦有一个爱好被选择,即可通过校验,此时就需要获得爱好的所有选项,id是唯一的,但name可以多个标签公用,此时getElementByName,之后遍历数组,如果有一个爱好被选择,则该checked的值为1,就能通过校验,失去焦点后,触发校验事件,不通过校验的提示会一直显示,直到通过校验则立即返回。 在校验验证码时,需要获得codespan的innerHTML的值,将该值和用户输入值进行比较,相同则通过。 当开始注册按钮的属性disabled为不可读,只有当用户勾选同意协议时(checked值为true),变为可读(disabled值为false),此时二者正好相反。 再点击提交按钮时,需要进行时间阻断,触发之前定义的所有校验事件,只有之前的校验事件全部通过,该submit才能够实现。οnsubmit=“return checkSub()”
注册界面
body{background: url(img/a.jpg) no-repeat center 0};
font{color="darkgray"};
tr{height:60px}
//常见验证码
function createCode(){
//创建随机4位数字,math.floor向下取整
var code=Math.floor(Math.random()*9000+1000);
//获取元素对象
var span=document.getElementById("codeSpan");
//将数字存放到span中
span.innerHTML=code;
//给span添加背景图片
}
//验证用户名
function checkUname(){
//获取用户获得用户名信息
var uname=document.getElementById("uname").value;
//创建校验规则,用户名2-4个
var reg=/^[\u4e00-\u9fa5]{2,4}$/
//获取span对象
var unameSpan=document.getElementById("unameSpan");
//开始交验
if(unameSpan==""||unameSpan==null){
//输入校验结果
unameSpan.innerHTML="*用户名不能为空";
unameSpan.style.color="red";
return false;
}else if(reg.test(uname)){
//输入校验结果
unameSpan.innerHTML="*用户名通过";
unameSpan.style.color="green";
return true;
}else{
//输入校验结果
unameSpan.innerHTML="*用户名格式不符"
unameSpan.style.color="red";
return false;
}
}
//验证密码
function checkPwd(){
//获取用户获得用户名信息
var upwd=document.getElementById("pwd").value;
//创建校验规则,密码要求6-8位,首位为字母,后面5-7位是数字
var reg=/^[a-z]\w{5,7}$/;
//获取span对象
var span=document.getElementById("pwdSpan");
//开始交验
if(span==""||span==null){
//输入校验结果
span.innerHTML="*密码不能为空";
span.style.color="red";
return false;
}else if(reg.test(upwd)){
//输入校验结果
span.innerHTML="*密码通过";
span.style.color="green";
return true;
}else{
//输入校验结果
span.innerHTML="*密码格式不符"
span.style.color="red";
return false;
}
//第一次密码为a123456,第二次密码为a1234567,则修改的第一次密码,确认密码也会重新校验
checkPwd2();
}
//校验确认密码
function checkPwd2(){
//获取第一次校验密码
var pwd=document.getElementById("pwd").value;
//获取确认密码
var pwd2=document.getElementById("pwd2").value;
//获取span对象
var span=document.getElementById("pwd2Span");
//比较前两次密码是否相同
if( pwd2==""|| pwd2==null){
//输入校验结果
span.innerHTML="*密码不能为空";
span.style.color="red";
return false;
}else if(pwd===pwd2){
//输入校验结果
span.innerHTML="*密码通过";
span.style.color="green";
return true;
}else{
//输入校验结果
span.innerHTML="*密码不同,请重新输入"
span.style.color="red";
return false;
}
}
//校验手机号
function checkPhone(){
return checkField("phone",/^1[3456789]\d{9}$/);
}
//校验邮箱
function checkmail(){
return checkField("mail",/^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/)
}
//校验籍贯
function checkAddress(){
//获取用户选择的数据
var sel=document.getElementById("address").value;
//获取span
var span=document.getElementById("addressSpan");
//校验,只要不为value="0"即可
if(sel!=0){
span.innerHTML="籍贯选择成功";
span.style.color="green";
return true;
}else{
span.innerHTML="请选择籍贯";
span.style.color="red";
return false;
}
}
//校验爱好选择
function checkFav(){
//获取所有的爱好
var favs=document.getElementsByName("fav");
//获取span对象
var span=document.getElementById("favSpan");
//遍历
for(var i=0;i |