Day12
来源:互联网 发布:数据恢复高级技术 编辑:程序博客网 时间:2024/05/21 17:37
Day12 - 键盘输入序列的验证指南
作者:©liyuechun
简介:JavaScript30 是 Wes Bos 推出的一个 30 天挑战。项目免费提供了 30 个视频教程、30 个挑战的起始文档和 30 个挑战解决方案源代码。目的是帮助人们用纯 JavaScript 来写东西,不借助框架和库,也不使用编译器和引用。现在你看到的是这系列指南的第 12 篇。完整中文版指南及视频教程在 从零到壹全栈部落。
项目效果
文档里提供了一个 script
标签,供我们从 Cornify.com 加载一个 JS 文件,调用其中的 cornify_add()
方法时,会在页面中追加 p
标签,并在 DOM 中插入一个图标。Cornify 的具体效果如上所示。
解决思路
- 指定可激发特效的字符串
- 监测字符串变化
- 事件监听
- 正则表达式判断字符串输入
- 处理输入,在符合条件时,调用
cornify_add()
代码分析
1. 指定可激发特效的字符串
const pressed = [];const secretCode = 'liyc';
声明一个空数组pressed
用于键盘输入字符的处理,并且声明一个秘钥字符串secretCode
用于激发效果的触发。
2. 监测字符串变化
- 声明字符串输入变化的
div
<div style="font-size:40px;color:red" class="input_word_pre"></div><div style="font-size:40px;color:blue" class="input_word_af"></div>
- 获取div对象
const input_word_pre = document.querySelector('.input_word_pre');const input_word_af = document.querySelector('.input_word_af');
- 更新div显示数据
input_word_pre.innerText = pressed.join('');...input_word_af.innerText = pressed.join('');
3. 事件监听
window.addEventListener('keyup', callback);
addEventListener
通过keyup
监听键盘输入的变化,当键盘弹起时,调用callback
函数。
4. 正则表达式判断字符串输入
const regex = new RegExp('[A-z]', 'gi');<!--判断输入的键盘上的字母是A - z的字符-->if (e.key.length === 1 && e.key.match(regex)) { ... }
5. 处理输入,在符合条件时,调用 cornify_add()
<!--当pressed数组里面的字符个数大于密钥字符串的个数时,每新增一个字符,将最前面一个删掉-->pressed.splice(0, pressed.length - secretCode.length);<!--当`pressed`数组里面的连续的字符连接成的字符串中包涵我们给定的秘钥时,调用`cornify_add();`函数-->if (pressed.join('').includes(secretCode)) { cornify_add(); }
完整代码
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Key Detection</title> <script type="text/javascript" src="http://www.cornify.com/js/cornify.js"></script></head><body> <div style="font-size:20px;color:green">请输入:liyc</div> <div style="font-size:40px;color:red" class="input_word_pre"></div> <div style="font-size:40px;color:blue" class="input_word_af"></div> <script> const pressed = []; const secretCode = 'liyc'; const input_word_pre = document.querySelector('.input_word_pre'); const input_word_af = document.querySelector('.input_word_af'); window.addEventListener('keyup', (e) => { const regex = new RegExp('[A-z]', 'gi'); if (e.key.length === 1 && e.key.match(regex)) { pressed.push(e.key); input_word_pre.innerText = pressed.join(''); pressed.splice(0, pressed.length - secretCode.length); input_word_af.innerText = pressed.join(''); if (pressed.join('').includes(secretCode)) { console.log('DING DING!'); cornify_add(); // alert(secretCode); } } }); </script></body></html>
源码下载
Github Source Code
社群品牌:从零到壹全栈部落
定位:寻找共好,共同学习,持续输出全栈技术社群
业界荣誉:IT界的逻辑思维
文化:输出是最好的学习方式
官方公众号:全栈部落
社群发起人:春哥(从零到壹创始人,交流微信:liyc1215)
技术交流社区:全栈部落BBS
全栈部落完整系列教程:全栈部落完整电子书学习笔记
阅读全文
0 0
- day12
- day12
- day12
- day12
- day12
- day12
- day12
- Day12
- day12
- Day12
- day12
- day12
- day12
- day12
- Day12
- day12-笔记
- opencvAX-day12
- day12,day13
- 微信小程序项目实践 项目范围及开发计划
- Eclipse的一些常用的快捷键
- 【POJ2828】Buy Tickets
- 计算机网络--数据链路层
- ubuntu配置 shadowsocks客户端
- Day12
- idea拉公司项目被拒绝解决办法
- linux C之access的函数
- PAT甲级1006. Sign In and Sign Out
- STM32F4 使用SPI读取气压计MS5611的数据并转化为大气压强
- 多源最短路(Floyd算法)
- 上传文件返回413错误
- Shell脚本学习第五天——算术运算符
- 我的博客