Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/471.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery keydown,但在文本框中忽略_Javascript_Jquery - Fatal编程技术网

Javascript jQuery keydown,但在文本框中忽略

Javascript jQuery keydown,但在文本框中忽略,javascript,jquery,Javascript,Jquery,我正在调用一个函数(如下),如果用户按下删除按钮,该函数将执行一个操作。它工作正常,但我只需要在页面上执行,而不是在用户键入时(在输入或文本区域内) 如果用户处于输入或文本区,我如何将上述修改为不开火 提前感谢, Dave检查evt。目标的类型: $(window).keydown(function (evt) { if (evt.target.tagName.toLowerCase() !== 'input' && evt.target.tagName.

我正在调用一个函数(如下),如果用户按下删除按钮,该函数将执行一个操作。它工作正常,但我只需要在页面上执行,而不是在用户键入时(在输入或文本区域内)

如果用户
处于
输入
文本区
,我如何将上述
修改为
不开火

提前感谢,


Dave检查evt。目标的类型:

$(window).keydown(function (evt) {
    if (evt.target.tagName.toLowerCase() !== 'input' &&
        evt.target.tagName.toLowerCase() !== 'textarea' && evt.which == 46) { // delete
        goDoSomething();
    }
});

您可以使用一个全局变量,并在文本框聚焦时将其设置为某个值,然后在模糊时将其重置。大概是这样的:

var textboxSelected = false;

$(":input").focus(function () {
     textboxSelected = true;
});
$(":input").blur(function () {
     textboxSelected = false;
});
$(window).keydown(function (evt) {
  if(evt.target != $('input') && evt.target != $('textarea')){
     if (evt.which == 46) { // delete
        goDoSomething();
     }
  }
});
然后在onKeyDown事件中,在执行其余功能之前,检查变量是否设置为false:

$(window).keydown(function (evt) {
if (evt.which == 46 && textboxSelected == false) {

    goDoSomething();
}
});

试试这样的东西:

var textboxSelected = false;

$(":input").focus(function () {
     textboxSelected = true;
});
$(":input").blur(function () {
     textboxSelected = false;
});
$(window).keydown(function (evt) {
  if(evt.target != $('input') && evt.target != $('textarea')){
     if (evt.which == 46) { // delete
        goDoSomething();
     }
  }
});

@达迪,我很高兴这有帮助