首先我们需要在一个页面内使用html代码写出注册与登录
点击注册页面时显示注册页面并隐藏登录页面,登录页面同理,可以将两个页面用不同的div包起来并使用show();hide();来进行实现。
注册页面
首先我们需要规定用户名长度格式以及是否存在相同用户名,密码的长度可以使用正则表达式来实现。确认密码则需要跟第一次密码输入一致,验证码则需要根据获取的4位验证码进行对比是否一致。如果不满足条件则会在input框后面隐藏的span标签中进行提示,这里需要给input添加一个离焦事件来实现。
发送验证码按钮需要在用户名与密码填写完成的情况下才可以发送,发送验证码用到Math.random();这里要注意该方法的范围,且我们需要的时4位验证码需要考虑首位为0的情况,这里提供一个简单思路,可以使用4次Math.random()*10;转换为整数,这个可以获得4个随机0-9之间的整数,将他们转换成字符进行拼接即可变为一个4位验证码。
注册按钮则是在用户名、密码、确认密码、验证码都完成且正确完成注册,完成后我们将用户名信息和密码可以存放到数组中。
登录页面
登录页面与注册页面的实现方法大致相同,需要注意的时,登录的用户名判断时如果用户名存在才可以登录,而注册页面时用户名存在则不可以注册,这部分是相反的。
在点击登录按钮时我们需要获取用户名与密码输入的内容与数组里面一致才可以登录,这里也提供一个简单的思路,我们可以将用户名与密码分别存放在两个数组内,通过下标来联系两个数组使得相同下标的两个数组内存放的值分别是用户名和密码,在进行校验时只需通过循环遍历用户名数组找到相同值获取下标并利用该下标进行密码的校验即可。
下面是这个简单注册登录的全部代码,还做了登录成功以后会显示用户信息以及修改密码的功能,读者可以在阅读后进行参考来实现这部分的内容。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script src="js/jquery-1.12.4.js"></script>
</head>
<body>
<div id="logining">
<h1>首页</h1>
<span id="index"></span>
<div id="showsignin" style="display: none;">
<br />
用户名:<input id="usename" />
<span id="tips1"></span><br />
密码:<input id="passwd" type="password"/>
<span id="tips2"></span><br />
确认密码:<input id="passwdagain" type="password"/>
<span id="tips3"></span><br />
验证码:<input id="code"/>
<span id="codetips"></span><br />
<span id="codetips1"></span><br />
<button id="codebtu">点击发送验证码</button>
<button id="signin">注册</button>
</div>
<div id="showlogin" style="display: none;">
<br />
用户名:<input id="_usename" />
<span id="tips4"></span><br />
密码:<input id="_passwd" />
<span id="tips5"></span><br />
验证码:<input id="_code"/>
<span id="_codetips"></span><br />
<span id="_codetips1"></span><br />
<button id="_codebtu">点击发送验证码</button>
<button id="login">登录</button>
</div>
<button id="fakesignin">注册页面</button>
<button id="fakelogin">登录页面</button>
</div>
<div id="loginsuccess" style="display: none;">
<h1><span id="success"></span></h1>
<div>
<ul>
</ul>
</div>
<h1>修改密码</h1>
新密码:<input id="newpasswd"/>
<span id="newpasswdtips"></span><br />
确认密码:<input id="newpasswdagain" />
<span id="newpasswdagaintips"></span><br />
<button id="change">修改密码</button>
</div>
<script>
var username = ["zhangsan","wangwu"];
var passwd = ["123123","111111"];
var code=null;
var code1=null;
var successname;
$("#fakesignin").click(function(){
$("#index").html("注册页面")
$("#showlogin").hide(500);
$("#showsignin").show(1000);
});
$("#fakelogin").click(function(){
$("#index").html("登录页面")
$("#showsignin").hide(500);
$("#showlogin").show(1000);
});
function _checkusername(a,b,c){ //检查用户名c=0时为注册检查c!=0时为登录检查
var name = a.val();
var namematch = /^[A-Za-z0-9]{6,15}$/
if(!name.match(namematch)){
b.html("<font color='red'>用户名必须在6-15位之间且不能用特殊符号</font>");
return false;
}else{
for (var i = 0; i < username.length; i++) {
if(name==username[i]){
if(c==0){
b.html("<font color='red'>用户名已存在</font>");
return false;
}else{
b.html("<font color='green'>√</font>");
return true;
}
}
}
if(i==username.length){
if(c==0){
b.html("<font color='green'>√</font>")
return true;
}else{
b.html("<font color='red'>用户名不存在</font>")
return false;
}
}
}
}
function _checkpasswdagain(a,b,c){ //第二次密码校验是否和新密码相同
var pass = a.val();
var passagain = b.val();
if(pass!=passagain){
c.html("<font color='red'>两次密码必须一致</font>");
return false;
}else{
c.html("<font color='green'>√</font>");
return true;
}
}
function _checkpasswd(a,b,c){ //密码检查c==0时为注册登录离焦,c==1时为修改密码时校验,c==2时登录时校验
var pass = a.val();
if(pass.length<6||pass.length>15){
b.html("<font color='red'>密码必须在6-15位之间</font>")
if(c==1){
return -1;
}else{
return false;
}
}else{
b.html("<font color='green'>√</font>")
if(c==1){
for (var i = 0; i < username.length; i++) {
if(successname==username[i]){
return i;
}
}
}else if(c==2){
for (var i = 0; i < username.length; i++) {
if(username[i]==successname){
if(pass==passwd[i]){
return true
}
}
}
return false;
}else{
return true;
}
}
}
function arrplus(arr1,arr2){ //数组扩容
var username1 = new Array(arr1.length+1);
var passwd1 = new Array(arr2.length+1);
for (var i = 0; i < arr1.length; i++) {
username1[i]=arr1[i];
}
for (var i = 0; i < arr2.length; i++) {
passwd1[i]=arr2[i];
}
username=username1;
passwd=passwd1;
}
function _code(a,b,c){ //验证码校验
if(c!=null){
var usercode = a.val();
if(usercode==c){
b.html("<font color='green'>验证码正确</font>");
return true;
}else{
b.html("<font color='red'>请输入正确的验证码</font>");
return false;
}
}else{
return false;
}
}
$("#usename").blur(function(){ //注册用户名离焦事件
_checkusername($("#usename"),$("#tips1"),0); //三个参数1.输入框2.提示框3.方法(0注册1登录)
});
$("#passwd").blur(function(){ //注册密码离焦事件
_checkpasswd($("#passwd"),$("#tips2"),0); //三个参数1.输入框2.提示框3.方法(0注册登录1修改密码2登陆时校验)
});
$("#passwdagain").blur(function(){ //注册确认密码离焦事件
_checkpasswdagain($("#passwd"),$("#passwdagain"),$("#tips3")); //三个参数1.第一次密码输入框2.第二次密码输入框3.提示框
});
$("#codebtu").click(function(){ //生成验证码
//判断用户名、密码、确认密码是否输入完成且合理
if(_checkusername($("#usename"),$("#tips1"),0)&&_checkpasswd($("#passwd"),$("#tips2"),0)&&_checkpasswdagain($("#passwd"),$("#passwdagain"),$("#tips3"))){
//生成4位验证码
var one = parseInt(Math.random()*10);
var two = parseInt(Math.random()*10);
var three = parseInt(Math.random()*10);
var four = parseInt(Math.random()*10);
code = one.toString()+two.toString()+three.toString()+four.toString();
$("#codetips").html(code);
}else{
alert("请先输入正确的用户名和密码")
}
});
$("#code").blur(function(){ //验证码离焦事件
_code($("#code"),$("#codetips1"),code); //三个参数1.输入框2.提示框3验证码(code表示注册验证码,code1表示登录验证码)
});
$("#signin").click(function(){ //注册成功点击事件
//判断用户名、密码、确认密码、验证码是否合理且正确
if(_checkusername($("#usename"),$("#tips1"),0)&&_checkpasswd($("#passwd"),$("#tips2"),0)&&_checkpasswdagain($("#passwd"),$("#passwdagain"),$("#tips3"))&&_code($("#code"),$("#codetips1"),code)){
var name = $("#usename").val();
var pass = $("#passwd").val();
//判断数组是否满了,满了进行数组扩容并将用户民密码放在数组最后一位,没满遍历数组将用户民密码放在第一个空的位置
if(username[username.length]!=null||username[username.length]!=""){
arrplus(username,passwd); //数组扩容函数
username[username.length-1]=name;
passwd[passwd.length-1]=pass;
}else{
for (var i = 0; i < username.length; i++) {
if(username[i]==null||username[i]==""||username[i]=="undefiend"){
username[i]=name;
passwd[i]=pass;
}
}
}
alert("注册成功");
code=null;
$("#usename").val("");
$("#passwd").val("");
$("#passwdagain").val("");
$("#code").val("");
$("#tips1").html("");
$("#tips2").html("");
$("#tips3").html("");
$("#codetips").html("");
$("#codetips1").html("");
}else{
alert("注册失败")
}
})
$("#_usename").blur(function(){ //登录用户名离焦事件
_checkusername($("#_usename"),$("#tips4"),1); //三个参数1.输入框2.提示框3.方法(0注册,1登录)
});
$("#_passwd").blur(function(){ //登录密码离焦事件
_checkpasswd($("#_passwd"),$("#tips5"),0); //三个参数1.输入框2.提示框3.方法(0时为注册登录离焦,1时为修改密码时校验,2时登录时校验)
})
$("#_codebtu").click(function(){ //登录点击事件生成验证码
//生成4位验证码
var one = parseInt(Math.random()*10);
var two = parseInt(Math.random()*10);
var three = parseInt(Math.random()*10);
var four = parseInt(Math.random()*10);
code1 = one.toString()+two.toString()+three.toString()+four.toString();
$("#_codetips").html(code1);
});
$("#_code").blur(function(){ //登录验证码离焦事件
_code($("#_code"),$("#_codetips1"),code1); //三个参数1.输入框2.提示框3.验证码(code为注册验证码,code1为登录验证码)
})
$("#login").click(function(){ //登录离焦事件
successname = $("#_usename").val();
//验证用户名、密码、验证码是否合理且正确
if(_checkusername($("#_usename"),$("#tips4"),1)&&_checkpasswd($("#_passwd"),$("#tips5"),2)&&_code($("#_code"),$("#_codetips1"),code1)){
for (var i = 0; i < username.length; i++) {
var mes = $("<li>用户"+(i+1)+":"+username[i]+";密码:"+passwd[i]+"</li>");
$("ul").append(mes);
}
alert("登陆成功!")
$("#_usename").val("");
$("#_passwd").val("");
$("#_code").val("");
$("#tips4").html("");
$("#tips5").html("");
$("#_codetips").html("");
$("#_codetips1").html("");
$("#success").html("欢迎你"+successname)
$("#logining").hide();
$("#loginsuccess").show(1000);
}else{
alert("登陆失败!");
}
});
$("#newpasswd").blur(function(){ //修改密码第一次输入离焦事件
_checkpasswd($("#newpasswd"),$("#newpasswdtips"),1); //三个参数1.输入框2.提示框3.方法(0登录注册离焦事件,1修改密码,2登录时校验)
});
$("#newpasswdagain").blur(function(){ //修改密码确认密码离焦事件
_checkpasswdagain($("#newpasswd"),$("#newpasswdagain"),$("#newpasswdagaintips")); //三个参数1.修改密码第一次密码输入框2.第二次输入框3.提示框
});
$("#change").click(function(){ //修改密码点击事件
var index = _checkpasswd($("#newpasswd"),$("#newpasswdtips"),1); //获取密码下标
//判断密码是否一致
if(index!=-1&&_checkpasswdagain($("#newpasswd"),$("#newpasswdagain"),$("#newpasswdagaintips"))){
var pass = $("#newpasswd").val();
passwd[index]=pass;
alert("修改成功!")
$("ul").empty();
for (var i = 0; i < username.length; i++) {
var mes = $("<li>用户"+(i+1)+":"+username[i]+";密码:"+passwd[i]+"</li>");
$("ul").append(mes);
}
}else{
alert("修改失败!")
}
});
</script>
</body>
</html>