javascript - 如何让按键在输入字段上不起作用
问题描述
我只是想在我的 Reddit 用户脚本中添加一个简单的功能,使我能够在帖子上按 E 并单击 upvote 按钮,我设法在 jQuery 中使用此代码来做到这一点,但是当我输入任何输入时它也可以工作场,我不知道如何让它停止。
代码:
$(document).ready(()=>{
$(document).keypress((e)=>{
if(e.key === 'e'){
//$('.voteButton[data-click-id="upvote"]')[0].click();
console.log('clicked!');
}
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" />
注意:这应该是重复的问题确实对我有帮助,但不能直接解决我的问题,添加if($(e.target).is('input,select,button,textarea,div[role="textbox"]')) return;
是修复它的原因,显然 Reddit 使用文本字段的包装器,所以我必须添加div[role="textbox"]
使用的“文本框”,问题是我将不得不为所有这些包装元素手动添加自定义选择。
解决方案
您可以尝试如果事件元素是输入然后从函数中离开:
$(document).ready(()=>{
$(document).keypress((e)=>{
if($(e.target).is('input')) return
if(e.key === 'e'){
//$('.voteButton[data-click-id="upvote"]')[0].click();
console.log('clicked!');
}
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input>
推荐阅读
- python - 如何在apache默认conf文件中添加多个python-path
- node.js - 如何识别和处理单个话语中的多个意图
- azure - 创建新应用程序
- regex - 我需要用 sed 转义哪些字符才能使这个正则表达式工作
- angular - Google App Engine 的部署问题
- java - Eclipse IDE 错误,cmd 显示“Java.lang.classnotfoundexception:version”
- angular - Karma/Jasmine 强制导入无关组件
- c++ - 将 Python 数据读入 C++ 代码
- angular - Angular 6:错误:找不到“object”类型的不同支持对象“[object Object]”。NgFor 只支持绑定到 Array 等 Iterables
- swift - 快速将图像存储在 Core Data 中