首页 > 解决方案 > 如何让按键在输入字段上不起作用

问题描述

我只是想在我的 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"]使用的“文本框”,问题是我将不得不为所有这些包装元素手动添加自定义选择。

标签: javascriptjqueryuserscripts

解决方案


您可以尝试如果事件元素是输入然后从函数中离开:

$(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>


推荐阅读