纯HTML+CSS+js实现大型企业站小米商城官网之注册页面

本文介绍了使用HTML和JavaScript实现前端登录注册功能的过程,包括手机号验证、验证码生成与验证、密码设置等步骤,并展示了相关代码。在点击立即注册后,会进行手机号格式检查,展示验证码页面,然后进行验证码校验和密码设置,最终将数据存储在本地浏览器。
摘要由CSDN通过智能技术生成

实现效果:点击登录页面,输入国家/地区,以及手机号码进行注册,点击立即注册之后随机生成一个四位数验证码输出到控制台,获取生成的验证码通过判断正确之后即注册成功,数据保存到本地浏览器中

实现思路:

1、对立即注册按钮设置一个点击事件,在点击事件内部判断手机号如果符合条件,则显示下一个获取验证码的页面

2、通过setInterval设置验证码倒计时(60)秒,定义一个随机生成四位数的函数方法

3、对下一步按钮设置点击事件,获取到刚刚保存在本地浏览器的验证码并进行判断

4、设置密码

5、如果两次输入的密码正确,则跳转到首页并显示已登录,将数据保存到本地浏览器中

源代码:

HTML部分

<section class="main">
        <div class="logo">
            <img src="./img/header/logo.png" alt="">
        </div>
        <h1 class="title_big30">注册小米帐号</h1>
        <!-- 注册页面 -->
        <div class="regbox">
            <h4>国家/地区</h4>
            <input type="text" placeholder="国家" class="countryinput">
            <div class="region_tip_text">成功注册帐号后,国家/地区将不能被修改</div>
            <h4 class="title-4">手机号码</h4>
            <div class="phone">
                <input id="text" type="tel" name="phone" data-type="PH" placeholder="请输入手机号码">
            </div>
            
            <!-- 错误信息提示 -->
            <div class="err_tip"></div>

            <input id="btn" class="btnGroup btn_reg_1 submit-step" data-to="phone-step2" type="submit" value="立即注册">
        </div>
        <!-- 验证码页面 -->
        <div class="regboxTwo">
            <div class="step2_txt">
                <p>我们已经发送一条验证短信至<span class="address-place">+86 13660354891</span></p>
                <p>请输入短信中的验证码</p>
                <div class="inputcode">
                    <input class="inputcode_txt" type="text" placeholder="请输入验证码" name="">
                    <button class="resend">重新发送</button>
                </div>
                <div class="err_tip">
                   !请输入短信验证码
                </div>
                <div class="not_receive">
                    <a href="#">收不到验证码?</a>
                </div>
                <input class="btnGroup btn_reg_1  submit-step" type="submit" value="下一步">
                <input class="btnGroup btn_reg_2 back-step" data-to="phone-step1" type="button" value="返回">
            </div>
        </div>
        <!-- 设置密码 -->
        <div class="regboxthree">
            <div class="step2_txt">
                <p>您注册的手机号码为:<span class="address-place">00000000000</span></p>
                <p class="title">请设置您的密码:</p>
                <input class="inputpassword" type="password" placeholder="请输入密码" name="ticket">
                <div class="err_tip">请再次输入密码</div>
                <input class="inputpassword" type="password" placeholder="请再输入一次密码" name="tickettwo">
                <div class="err_tip">
                   错误信息提示
                </div>
                <p class="title_tis">密码长度8~16位,数字、字母、字符至少包含两种</p>
                <input class="btnGroup btn_reg_1  submit-step" type="submit" value="提交">
            </div>
        </div>
        <!-- 账号显示 -->
        <div class="regbox-account">
            <div class="step2_txt">
                <p>您的小米ID:<span class="address-place">00000000</span></p>
                <input class="btnGroup btn_reg_1  submit-step" type="submit" value="登录">
            </div>
        </div>
    </section>

js部分:

       var xiaomi = {
    start(){
        this.register();
    },
    // 立即注册
    register(){
        let btn = document.getElementById('btn');
        let error = document.getElementsByClassName('err_tip')[0];
        let text = document.getElementById('text');
        btn.onclick = function() {
            if (text.value) {
                if (/^1[3-9]\d{9}$/.test(text.value)) {
                    sessionStorage.setItem("phone", text.value);
                    document.getElementsByClassName('regbox')[0].style.display = 'none';
                    document.getElementsByClassName('regboxTwo')[0].style.display = 'block';
                    xiaomi.verification();
                }
                else {
                    error.style.display = 'block';
                    error.innerHTML = '手机号码格式不正确';
				}
            }else {
                error.style.display = 'block';
                error.innerHTML = '请输入手机号码';
			}
        }
        text.onclick = function() {
			error.style.display = 'none';
		}
    },

    //验证码验证
    verification(){
        let phone = sessionStorage.getItem("phone");
        //设置电话号码
        document.getElementsByClassName('address-place')[0].innerHTML = '+'+ 86 + " " + phone;

        let resendBtn = document.getElementsByClassName('resend')[0];
        let inputcodeTxt = document.getElementsByClassName('inputcode_txt')[0];
        let submitStep = document.getElementsByClassName('submit-step')[1];
        let backStep = document.getElementsByClassName('back-step')[0];
        let error = document.getElementsByClassName('err_tip')[1];

        // 设置获取验证码倒计时
        resendBtn.innerHTML = "重新发送(60)";

        function timer() {
			let timeSet = 60;
			resendBtn.disabled = 'disabled';
			let time = setInterval(function() {
				timeSet--;
				resendBtn.innerHTML = "重新发送(" + timeSet + ")";
				if (timeSet == 0) {
					clearInterval(time);
					resendBtn.innerHTML = "重新发送";
					resendBtn.disabled = false;
				}
			}, 1000);
        }
        timer();

        resendBtn.onclick = function() {
			timer();
        }
        
        // 随机生成四位数
		function numBer() {
			let num = '';
			for (let i = 0; i < 4; i++) {
				num += parseInt((Math.random() * 10));
			}
			console.log(num);
			return num;
		}
        let num = numBer();

        // 下一步
        submitStep.onclick = function(){
            if(inputcodeTxt.value){
                if(inputcodeTxt.value == num){
                    document.getElementsByClassName('regboxTwo')[0].style.display = 'none';
                    document.getElementsByClassName('regboxthree')[0].style.display = 'block';
                    xiaomi.regboxthree();
                }else{
                    error.style.display = 'block';
                    error.innerHTML = '验证码错误或已过期';
                }
            }else{
                error.style.display = 'block';
            }
        }
        // 返回
		backStep.onclick = function() {
			document.getElementsByClassName('regbox')[0].style.display = 'block';
			document.getElementsByClassName('regboxTwo')[0].style.display = 'none';
		}
    },

    //设置密码
    regboxthree(){
        let phone = sessionStorage.getItem("phone");
        document.getElementsByClassName('address-place')[1].innerHTML = phone;

        let btn = document.getElementsByClassName('submit-step')[2];
        let inputpassword1 = document.getElementsByClassName('inputpassword')[0];
        let inputpassword2 = document.getElementsByClassName('inputpassword')[1];
        let error = document.getElementsByClassName('err_tip')[2];
        let error1 = document.getElementsByClassName('err_tip')[3];

        let password = /^(?![0-9]+$)(?![a-z]+$)(?![A-Z]+$)(?![^(0-9a-zA-Z)]+$).{8,16}$/;

        btn.onclick = function(){
            if(inputpassword1.value){
                if(password.test(inputpassword1.value)){
                    if (inputpassword2.value){
                        if(inputpassword1.value==inputpassword2.value){
                            sessionStorage.setItem("pwd", inputpassword1.value);
                            document.getElementsByClassName('regboxthree')[0].style.display = 'none';
                            document.getElementsByClassName('regbox-account')[0].style.display = 'block';
                            xiaomi.login();
                        }else{
                            error1.style.display = 'block';
					        error1.innerHTML = '两次密码不一样';
                        }
                    }else{
                        error1.style.display = 'block';
					    error1.innerHTML = '请再输入一次密码';
                    }
                }else{
                    error.style.display = 'block';
					error.innerHTML = '密码格式不对';
                }
            }else{
                error.style.display = 'block';
                error.innerHTML = '请输入密码';
            }
        }
        inputpassword1.onclick = function(){
            error.style.display = 'none';
			error1.style.display = 'none';
        }
        inputpassword2.onclick = function(){
            error.style.display = 'none';
			error1.style.display = 'none';
        }

    },
    //登录
    login(){
        let btn = document.getElementsByClassName('submit-step')[3];
        let num = '';
        for (let i = 0; i < 7; i++) {
			num += parseInt((Math.random() * 10));
        }
        document.getElementsByClassName('address-place')[2].innerHTML = num;
        sessionStorage.setItem("idaccount", num);

        btn.onclick = function(){
            window.location.href = 'login.html';
        }
    }
    
}

window.onload = function(){
    xiaomi.start();
}

以上,初步能够实现基本登陆效果,不足之处欢迎各位大佬指正~~~       一个不会前端的小白~~

基于html+css+js进行网页设计 课程设计 毕业设计 供参考 源码+说明 基于html+css+js进行网页设计 课程设计 毕业设计 供参考 源码+说明 基于html+css+js进行网页设计 课程设计 毕业设计 供参考 源码+说明 基于html+css+js进行网页设计 课程设计 毕业设计 供参考 源码+说明 基于html+css+js进行网页设计 课程设计 毕业设计 供参考 源码+说明 基于html+css+js进行网页设计 课程设计 毕业设计 供参考 源码+说明 基于html+css+js进行网页设计 课程设计 毕业设计 供参考 源码+说明 基于html+css+js进行网页设计 课程设计 毕业设计 供参考 源码+说明 基于html+css+js进行网页设计 课程设计 毕业设计 供参考 源码+说明 基于html+css+js进行网页设计 课程设计 毕业设计 供参考 源码+说明 基于html+css+js进行网页设计 课程设计 毕业设计 供参考 源码+说明 基于html+css+js进行网页设计 课程设计 毕业设计 供参考 源码+说明 基于html+css+js进行网页设计 课程设计 毕业设计 供参考 源码+说明 基于html+css+js进行网页设计 课程设计 毕业设计 供参考 源码+说明 基于html+css+js进行网页设计 课程设计 毕业设计 供参考 源码+说明 基于html+css+js进行网页设计 课程设计 毕业设计 供参考 源码+说明 基于html+css+js进行网页设计 课程设计 毕业设计 供参考 源码+说明 基于html+css+js进行网页设计 课程设计 毕业设计 供参考 源码+说明 基于html+css+js进行网页设计 课程设计 毕业设计 供参考 源码+说明 基于html+css+js进行网页设计 课程设计 毕业设计 供参考 源码+说明 基于html+css+js进行网页设计 课程设计 毕业设计 供参考 源码+说明 基于html+css+js进行网页设计 课程设计 毕业设计 供参考 源码+说明 基于html+css+js进行网页设计 课程设计 毕业设计 供参考 源码+说明 基于html+css+js进行网页设计 课程设计 毕业设计 供参考 源码+说明 基于html+css+js进行网页设计 课程设计 毕业设计 供参考 源码+说明 基于html+css+js进行网页设计 课程设计 毕业设计 供参考 源码+说明 基于html+css+js进行网页设计 课程设计 毕业设计 供参考 源码+说明 基于html+css+js进行网页设计 课程设计 毕业设计 供参考 源码+说明 基于html+css+js进行网页设计 课程设计 毕业设计 供参考 源码+说明 基于html+css+js进行网页设计 课程设计 毕业设计 供参考 源码+说明 基于html+css+js进行网页设计 课程设计 毕业设计 供参考 源码+说明 基于html+css+js进行网页设计 课程设计 毕业设计 供参考 源码+说明 基于html+css+js进行网页设计 课程设计 毕业设计 供参考 源码+说明
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值