Js 特效案例-生成和校验验证码

905 阅读1分钟

这是我参与11月更文挑战的第11天,活动详情查看:2021最后一次更文挑战

今天用javascript编写了一个获取验证码的简单程序,下面是整体的思路以及相关核心代码。

一、HTML布局

实现设计好相关需要的区域,html布局如下:

1、验证码区域

2、切换验证码链接(看不清,换一张)

3、输入验证码区域

4、提交验证区域

 <main>
        <div class="show_code">
            <span class="code" id="checkCode">abcd3d</span>
            <a id="linkbt">看不清换一张</a>
        </div>
        <div class="input_code">
            <label for="inputcode">验证码:</label>
            <input type="text" id="inputCode">
            <span id="text_show"></span>
        </div>
        <div class="button">
            <input type="button" id="ok_button" value="确定">
        </div>
    </main>

二、CSS样式

因为主要是为了练习一下javascript的代码,html布局的样式信息官网登录的简单版本,样式如下:

image.png

image.png

image.png

三、Javascript特效

(一)验证码结构要求有:

1、验证码为6位数

2、验证码包含数字、大写字母和小写字母

本次使用的生成符合范围验证码的方法为:设置验证码区间内的ASIIC码范围,利用随机函数,随机生成该范围内的ASIIC码值。 各部分的ASIIC码范围如下:

0-9:48-57

A-Z:65-90

a-z:97-122

(二)生成单个随机验证码

代码如下:


let createCode = (num) => {
    // let nums = Math.floor(Math.random() * 10 + 48) //[48,58)
    // let charA = Math.floor(Math.random() * 26 + 65) //[65,91)
    // let chara = Math.floor(Math.random() * 26 + 97) //[97,123)
    let codeStr = "";
    do {
        let temp = Math.floor(Math.random() * 123); //[0,123)
        if (isValid(temp)) {
            codeStr += String.fromCodePoint(temp);
        }
    } while (codeStr.length < 6)
    return codeStr;
}

(三)看不清,换一张

点击链接“看不清,换一张”,就更新验证码区域内容,重新生成六个随机数,代码如下:

linkbt.addEventListener('click', () => {
    checkCode.innerText = createCode(6);
    textShow.innerText = "";
    inputCode.value = "";
})

(四)提交验证码

点击确定按钮,验证码与输入是否相同,相同调整页面,不同关系验证码,清空输入框

image.png

B站视频网址:www.bilibili.com/video/BV1Ky…