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();
}
}
});
@达迪,我很高兴这有帮助