所以我有这个页面,用户可以在其中使用方向键在不同项目之间导航。为此,我使用 jquery 绑定(bind)器:
$(document.body).bind('keydown', function(event) {
// use the directional keys
我希望此事件每次都能工作,除非用户专注于文本输入。
所以我尝试像这样过滤掉事件:
$(document.body).bind('keydown', '*:not(input[type="text"], textarea)', function(event) {
但不幸的是,过滤器不起作用,并且在每种情况下都会触发事件。
我可以检测页面中每个输入的焦点(和模糊)事件,并通过全局 bool 值停用移动事件,但我发现它非常不优雅。
有没有办法让输入字段“消耗”事件,或者像我尝试做的那样使用反向选择器过滤事件?
提前致谢,
最佳答案
这不是有效的 .bind()
语法。传递给 .bind()
的事件无法被委托(delegate)。
您可能想使用.on()
:
$(document.body).on('keydown', '*:not(input[type="text"], textarea)', function(event) {
});
如果您使用 .on()
之前的 jQuery 版本(您不应该使用..),您可以使用 delegate()
:
$(document.body).delegate('*:not(input[type="text"], textarea)', 'keydown', function(event){
});
关于Javascript - 绑定(bind)到按键事件,除非用户处于文本输入状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32871713/