HTML+CSS+JS生成随机验证码

本文记录了一次跟随视频学习使用HTML、CSS和JavaScript生成随机验证码的过程。在实践中,作者尝试添加了提交按钮并实现验证码验证功能,但遇到了canvas尺寸调整和input警告的问题。文章分享了学习到的canvas使用、JS变量作用域及context相关知识,并期望得到大佬的指导帮助。
摘要由CSDN通过智能技术生成

昨天在小破站看到一个前端生成随机验证码的视频,感觉很有意思,就跟着操作了一下,成功了。
后来自己又想给它加一个提交按钮,输入并判断验证码的正确性,也可以正常运行,但是我的代码好像还是存在一些bug:
         1.canvas标签是绘图容器,自带属性使它是一个默认300*150的容器,缩小canvs容器时,里面的绘图也会变小,我没有找到合适的方法去调整它的大小。
         2.对于输入框input,我使用了float浮动,为了使input输入框和canvas里面的验证码并排,但是被vscode警告了。
这次的实战练习也经历了很多坎坷,但是也收获很大。学习到了canvas标签的用法、JS全局变量和局部变量、以及有关context的一些属性和方法。
最后,希望路过的大佬,帮我看看bug,帮帮菜鸟。

实现代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style type="text/css">
        label{
 
  • 0
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,以下是一个简单的验证码页面的示例代码: HTML: ```html <!DOCTYPE html> <html> <head> <title>验证码</title> <link rel="stylesheet" href="style.css"> <script src="script.js"></script> </head> <body> <div class="container"> <h1>验证码</h1> <form> <div class="form-group"> <label for="inputCode">请输入验证码:</label> <input type="text" class="form-control" id="inputCode" placeholder="验证码"> </div> <div class="form-group"> <img id="codeImg" class="code-img" src=""> <button type="button" class="btn btn-primary" id="refreshBtn">刷新</button> </div> <button type="submit" class="btn btn-success">提交</button> </form> </div> </body> </html> ``` CSS: ```css .container { max-width: 400px; margin: 0 auto; text-align: center; } h1 { margin-top: 50px; margin-bottom: 30px; } .form-group { display: flex; align-items: center; margin-bottom: 20px; } .form-control { flex: 1; margin-right: 10px; } .code-img { width: 120px; height: 40px; margin-right: 10px; } .btn-primary { margin-left: auto; } .btn-success { margin-top: 20px; } ``` JavaScript: ```javascript // 随机生成验证码 function generateCode() { var code = ''; var codeLength = 4; var codeChars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; for (var i = 0; i < codeLength; i++) { var randomIndex = Math.floor(Math.random() * codeChars.length); code += codeChars.charAt(randomIndex); } return code; } // 更新验证码图片 function updateCodeImg() { var code = generateCode(); var codeImg = document.getElementById('codeImg'); codeImg.src = 'code.php?code=' + code; return code; } // 刷新验证码 function refreshCode() { var code = updateCodeImg(); var inputCode = document.getElementById('inputCode'); inputCode.value = ''; inputCode.focus(); } // 初始加载验证码 refreshCode(); // 点击刷新按钮 var refreshBtn = document.getElementById('refreshBtn'); refreshBtn.addEventListener('click', function() { refreshCode(); }); // 提交表单时验证验证码 var form = document.querySelector('form'); form.addEventListener('submit', function(event) { var inputCode = document.getElementById('inputCode'); var code = inputCode.value; if (code !== updateCodeImg()) { event.preventDefault(); alert('验证码错误,请重新输入!'); refreshCode(); } }); ``` 以上代码包含了一个随机生成验证码、更新验证码图片、刷新验证码、验证验证码的功能,并且使用了Bootstrap的样式。需要注意的是,以上代码中的验证码图片地址为'code.php',需要在后端编写一个生成验证码图片的脚本。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

邻家的肥猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值