在JavaScript中,我想检测一些按键。但我想忽略用户在输入某种文本输入区域时所做的那些按键。我怎样才能做到这一点?
我试过了
if (document.activeElement.nodeName == 'INPUT') {
return;
}
if (document.activeElement.nodeName == 'TEXTAREA') {
return;
}
适用于这两个要素;但是,例如,Inbox by Gmail中的email-compose元素是一个DIV容器。我是否要排除所有活动DIV?是否有其他HTML元素用于获取键输入?我可能忽略了任何不同的方法吗?
答案 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>