jquery - 是否可以通过键入单词来触发事件?
问题描述
是否可以在输入单词的那一刻触发事件(不使用输入字段)?
我正在处理的网站上的某些元素具有类.hidden_elements
(显示:无)。.open
在(在任何给定时间)键入单词“hello”之后,如何将类(显示:块)添加到那些隐藏元素中。
我一直在尝试这种方法,但没有运气:
$(document).ready(function() {
'use strict';
$('body').on('keyup', function() {
if(this.value.trim().toLowerCase() == 'hello'){
$('.hidden_elements').addClass('open');
}
});
});
.hidden_elements {
display:none;
}
.open {
display:block;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="hidden_elements">I am hidden</div>
<div class="hidden_elements">I am hidden</div>
解决方案
行。以下代码段已经奏效。
将采取以下步骤
- 读取事件数据本身而不是
this.value
.this.value
onbody
仍然未定义 - 收集使用键盘输入的字符
event.originalEvent.key
- 缓冲区
buff
长度等于或大于 5 后,检查最后 5 个输入的字符是否与单词 'hello' - 输入后,它会通过添加类
hello
来显示 divopen
$(document).ready(function() {
'use strict';
let buff = '';
$('body').on('keyup', function(event) {
buff += event.originalEvent.key;
// console.log('buff.length', buff.length, buff);
if (buff.length >= 5) {
const lastFive = buff.substr(buff.length - 5);
if(lastFive.toLowerCase() == 'hello') {
$('.hidden_elements').addClass('open');
}
}
});
});
.hidden_elements {
display:none;
}
.open {
display:block;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="hidden_elements">I am hidden</div>
<div class="hidden_elements">I am hidden</div>
推荐阅读
- oracle - 如何删除oracle数据库速成版
- r - R - 将列名作为变量传递,名称包含 I()
- git - 我怎样才能看到提交和当前状态之间的区别,而不是提交?
- dart - 如何在 Flutter 中从 FTP 服务器检索文件
- android - 如何获取android中每个应用程序的数据(移动和wifi)使用情况?
- php - 查找丢失的日期,然后包含在数组中
- android - 如何将 onBackPressedCallback 添加到片段?
- node.js - JSLint 和 ESLint 问题(括号)
- wordpress - 如何仅从一个有多个类别的自定义帖子类别中获取帖子?
- python - pandas 数据框,对按列名同时分组的行应用 t 检验(有重复!)