在javascript中检测文本输入元素

时间:2016-05-03 16:47:33

标签: javascript input

在JavaScript中,我想检测一些按键。但我想忽略用户在输入某种文本输入区域时所做的那些按键。我怎样才能做到这一点?

我试过了

if (document.activeElement.nodeName == 'INPUT') {
    return;
}
if (document.activeElement.nodeName == 'TEXTAREA') {
    return;
}

适用于这两个要素;但是,例如,Inbox by Gmail中的email-compose元素是一个DIV容器。我是否要排除所有活动DIV?是否有其他HTML元素用于获取键输入?我可能忽略了任何不同的方法吗?

1 个答案:

答案 0 :(得分:0)

首先,我会使用jquery来规范您的活动。从那里,尝试测试$(event.target).is()

这是一个包含div的示例,其中捕获了所有事件。 <input>元素的事件将被忽略,而其他元素则不会被忽略,包括<textarea>的事件:

$('#mydiv').keypress(function(event) {
  if ($(event.target).is('input')) {
    return true;
  } else {
    console.log('not an input box');
    return false;
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="mydiv">
  <input>
  <span>Spanning area</span>
  <textarea></textarea>
</div>