首页/ mobileweb/ 移动端登录注册模板/ 代码预览

💻 代码预览 · 移动端登录注册模板

mw_other · 上传者 苏晓
← 返回详情
js/main.js · 约 4852 字符
1(function(){
2  var AUTH_KEY='auth_r08';
3  function getAuth(){ try{return JSON.parse(localStorage.getItem(AUTH_KEY))||null}catch(e){return null} }
4  function setAuth(o){ localStorage.setItem(AUTH_KEY, JSON.stringify(o)); }
5  function clearAuth(){ localStorage.removeItem(AUTH_KEY); }
6  function toast(msg){
7    var t=document.createElement('div'); t.className='toast'; t.textContent=msg;
8    document.body.appendChild(t);
9    requestAnimationFrame(function(){t.classList.add('show');});
10    setTimeout(function(){t.classList.remove('show'); setTimeout(function(){t.remove();},300);},1800);
11  }
12  function maskPhone(p){ return p.length===11 ? p.slice(0,3)+'****'+p.slice(7) : p; }
13  function isPhone(p){ return /^1[3-9]\d{9}$/.test(p); }
14
15  // 登录页/注册页:tab 切换
16  document.querySelectorAll('.auth-tabs button').forEach(function(b){
17    b.addEventListener('click',function(){
18      document.querySelectorAll('.auth-tabs button').forEach(function(x){x.classList.remove('on');});
19      document.querySelectorAll('.auth-panel').forEach(function(x){x.classList.remove('on');});
20      b.classList.add('on');
21      var id=b.getAttribute('data-panel');
22      document.getElementById(id).classList.add('on');
23    });
24  });
25
26  // 发送验证码 + 60s 倒计时
27  document.querySelectorAll('.codebtn').forEach(function(btn){
28    btn.addEventListener('click',function(){
29      var box=btn.closest('.field'); var phone=box.querySelector('input').value.trim();
30      if(!isPhone(phone)){ toast('请输入正确的手机号'); return; }
31      var n=60; btn.disabled=true; btn.textContent=n+'s 后重发';
32      toast('验证码已发送(演示)');
33      var t=setInterval(function(){ n--; if(n<=0){clearInterval(t);btn.disabled=false;btn.textContent='获取验证码';} else {btn.textContent=n+'s 后重发';} },1000);
34    });
35  });
36
37  // 协议勾选 → 启用主按钮
38  function syncGate(box){
39    var cb=box.querySelector('.agree input'); var b=box.querySelector('.btn-auth');
40    function f(){ b.disabled=!cb.checked; } cb.addEventListener('change',f); f();
41  }
42  // 登录页:登录按钮(含协议)
43  var loginForm=document.querySelector('#loginForm');
44  if(loginForm){
45    syncGate(loginForm);
46    loginForm.addEventListener('submit',function(e){
47      e.preventDefault();
48      var panel=document.querySelector('.auth-panel.on');
49      var phone=panel.querySelector('input[data-k="phone"]').value.trim();
50      if(!isPhone(phone)){ toast('请输入正确的手机号'); return; }
51      if(!loginForm.querySelector('.agree input').checked){ toast('请先阅读并同意用户协议'); return; }
52      if(panel.id==='p_code'){
53        var code=panel.querySelector('input[data-k="code"]').value.trim();
54        if(!/^\d{6}$/.test(code)){ toast('请输入 6 位验证码'); return; }
55      }else{
56        var pwd=panel.querySelector('input[data-k="pwd"]').value;
57        if(pwd.length<6){ toast('密码至少 6 位'); return; }
58      }
59      setAuth({phone:phone,name:maskPhone(phone)});
60      toast('登录成功,正在进入');
61      setTimeout(function(){location.href='account.html';},1200);
62    });
63  }
64  // 注册页
65  var regForm=document.querySelector('#regForm');
66  if(regForm){
67    syncGate(regForm);
68    regForm.addEventListener('submit',function(e){
69      e.preventDefault();
70      var phone=regForm.querySelector('input[data-k="phone"]').value.trim();
71      var code=regForm.querySelector('input[data-k="code"]').value.trim();
72      var pwd=regForm.querySelector('input[data-k="pwd"]').value;
73      var pwd2=regForm.querySelector('input[data-k="pwd2"]').value;
74      if(!isPhone(phone)){ toast('请输入正确的手机号'); return; }
75      if(!/^\d{6}$/.test(code)){ toast('请输入 6 位验证码'); return; }
76      if(pwd.length<6){ toast('密码至少 6 位'); return; }
77      if(pwd!==pwd2){ toast('两次密码不一致'); return; }
78      if(!regForm.querySelector('.agree input').checked){ toast('请先阅读并同意用户协议'); return; }
79      setAuth({phone:phone,name:maskPhone(phone)});
80      toast('注册成功,已自动登录');
81      setTimeout(function(){location.href='account.html';},1200);
82    });
83  }
84  // 我的页
85  var acc=document.querySelector('#account');
86  if(acc){
87    var a=getAuth();
88    if(!a){
89      acc.innerHTML='<div class="acc-tip">您还未登录<br><a href="index.html">点击前往登录 ›</a></div>';
90    }else{
91      acc.querySelector('.nm').textContent=a.name||'微信用户';
92      acc.querySelector('.sub').textContent=a.phone? a.phone : '已登录';
93    }
94    var lo=document.querySelector('#logoutBtn');
95    if(lo){ lo.addEventListener('click',function(){ clearAuth(); toast('已退出登录'); setTimeout(function(){location.href='index.html';},900); }); }
96  }
97})();
98