JS验证码校验

685 阅读3分钟

前言

平常大家不论是娱乐还是工作应该都或多或少会遇到验证码校验,今天就来聊聊怎么实现一个简单的验证码验证功能。

验证界面

首先将css文件与js文件引入

<link rel="stylesheet" href="index.css">

<script src="index.js"></script>

页面代码:

<h1>验证码验证功能</h1>
<p>请输入下面的验证码:</p>
<input type="text" id="input_code">
<button onclick="validate()">验证</button>
<div class="codeBox">
    <div id="code"></div>
    <button class="change" onclick="showCode()">换一张</button>
</div>

页面布局为四部分,标题,提示,验证框,验证按钮,与验证码显示容器,其中容器内包含验证码显示区,与刷新验证码按钮。

接下来为页面编写css代码,显示一个具有简单样式的页面:

.codeBox {
    display: flex;
    margin-top: 10px;
    width: 160px;
    justify-content: space-between;
    align-items: center;
}
/* 设置验证码框的样式 */
#code {
    font-size: 20px;
    width: 100px;
    height: 100%;
    line-height: 40px;
    text-align: center;
    border: 1px solid #ccc;
    color: rgb(68, 182, 144);
    background-color: rgb(117, 131, 144);
}
.change {
    border-style: none;
    background-color: rgb(204, 204, 204, 0.2);
    color: rgb(9, 117, 117);
    height: 40px;
    line-height: 40px;
}

验证码容器采用弹性布局,使其内容居中,justify-content: space-between 子元素靠边对齐平均分剩余的空间,再对验证码码和按钮各自定义字体颜色,背景色。此时界面如下:

image.png

可以看到此时,已经有了基本的样式,css就此打住,因为此次的核心在js部分,接下来为该实例添加功能函数。

功能函数

生成随机验证码:

function generateCode(length=6) {
let chars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
let code = "";
for (var i = 0; i < length; i++) {
    code += chars.charAt(Math.floor(Math.random() * chars.length));
}
return code;
}

首先我们定义了一个字符串在函数内,并定义了一个code变量用来保存最后要输出的验证码,通过Math.floor(Math.random() * chars.length) 产生一个随机整数,在截取字符串内指定元素,与code的值进行拼接,最后就得到一个指定长度验证码。
对于 generateCode(length=6),如果函数没有传入参数,则参数length默认值为6,否则为自己输入的值。

显示验证码:

function showCode() {
    var code = generateCode();
    var code_box = document.getElementById("code");
    code_box.innerHTML = code;
}

获取此时生成的验证码,再通过js的DOM操作将该字符串写到指定结点上。

验证验证码:

function validate() {
    var input_code = document.getElementById("input_code").value;
    var actual_code = document.getElementById("code").innerHTML;
    if (input_code == actual_code) {
        alert("验证成功!");
        showCode();
    } else {
        alert("验证失败,请重新输入!");
        showCode();
    }
}

同理当点击验证按钮时将通过js的DOM操作获取指定id元素的值,将其与当前验证码显示值进行比较,相等则弹出成功信息,失败则提示失败,无论验证成功与否验证码皆会刷新,通过showCode()生成新的验证码,更换验证码码按钮执行函数同样为该函数。 注意 最后还要添加一下代码:

window.onload = function() {
    showCode();
}

因为当验证页面加载完成时就应当显示验证码,而不是需要用户手动去点击才会实现,可以算一个小小的提升用户体验吧2。

结语

以上便是全部内容了,总体来说,这只是提供了一个简单的案例和思路,所以代码比较简单,喜欢的小伙伴可以根据个人喜好和需求进行自己的扩展。