JS:如何检测游标是否在文本字段中

Pra*_*GPz 4 html javascript shortcut

我想使用一些字母(键)作为javascript中某些操作的快捷方式.我想检查光标是否聚焦在任何文本字段,表单输入等上,以便当用户在表单或文本字段中键入内容时,将取消快捷操作.

例如,我希望在用户按下"A"时执行alert().但是如果用户在诸如"A网站"之类的文本区域中键入一些文本,那么他将按下"A",此时不应执行alert().

Th*_*uez 6

$(document).keydown( function( e ) { 
  if( e.target.nodeName == "INPUT" || e.target.nodeName == "TEXTAREA" ) return;
  if( e.target.isContentEditable ) return;

  // Do stuff 
}
Run Code Online (Sandbox Code Playgroud)


Pri*_*ner 5

jQuery

$(window).bind('keydown',function(e){
    if(e.target.nodeName.toLowerCase() === 'input'){
        return;
    }
    alert('a');
});
Run Code Online (Sandbox Code Playgroud)

或者纯js

window.onkeydown = function(e){
    if(e.target.nodeName.toLowerCase() === 'input'){
        return;
    }
    alert('a');
};
Run Code Online (Sandbox Code Playgroud)

你能除了这个做的是定义非警报元素类型的数组,这样inputtextarea等再检查没有这些元素的当前目标。

演示:http : //jsfiddle.net/7F3JH/


小智 5

window.onkeydown = function(e){
  if ( e.target.nodeName == 'INPUT' ) return;

  handle_shortcut();
};
Run Code Online (Sandbox Code Playgroud)

  • 为什么在“输入”上测试两次? (2认同)