我正在调用一个函数(如下所示),如果用户按下删除按钮,该函数将执行操作。它工作正常,但我只需要在页面上进行,而不是在用户输入时(在输入内或在textarea内)。
$(window).keydown(function (evt) {
if (evt.which == 46) { // delete
goDoSomething();
}
});
如果用户为how I can amend the above
not fire
或in
,则input
至textarea
的任何提示都会生效?
提前致谢,
戴夫
答案 0 :(得分:14)
检查evt.target的类型:
$(window).keydown(function (evt) {
if (evt.target.tagName.toLowerCase() !== 'input' &&
evt.target.tagName.toLowerCase() !== 'textarea' && evt.which == 46) { // delete
goDoSomething();
}
});
答案 1 :(得分:0)
您可以拥有一个全局变量,并在关注文本框时将其设置为某个值并在模糊时重置它。像这样:
var textboxSelected = false;
$(":input").focus(function () {
textboxSelected = true;
});
$(":input").blur(function () {
textboxSelected = false;
});
然后在你的onKeyDown事件中检查变量是否设置为false,然后再执行其余的功能:
$(window).keydown(function (evt) {
if (evt.which == 46 && textboxSelected == false) {
goDoSomething();
}
});
答案 2 :(得分:0)
尝试这样的事情:
$(window).keydown(function (evt) {
if(evt.target != $('input') && evt.target != $('textarea')){
if (evt.which == 46) { // delete
goDoSomething();
}
}
});