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