2009-11-14 62 views
5

我试图按下某个键时触发事件。它适用于此代码:禁用jquery按键时,在输入或textarea字段

$(document).keypress(function(e){ 
    switch(e.which){ 
      case 96:$("a.quicklinks").trigger('click'); 
      break; 
    } 

但是,如果用户在窗体字段中,我想禁用此行为。我如何测试用户是否在表单域中输入以执行此操作?谢谢。

回答

1

也许你可以设置一个全局变量

var disable_keyevents = false; 
$('textarea,input') 
    .focus(function() { disable_keyevents = true }) 
    .blur(function() { disable_keyevents = true; }); 

那么交换机之前只是检查disable_keyevents的价值的$(document)中.keypress事件。

16
$(document).keypress(function(e) { 
    if ($(e.target).is('input, textarea')) { 
     // event invoked from input or textarea 
    } 
    ...   
}); 
+0

这很好,谢谢! – Bill 2009-11-14 21:49:20

0

当用户在表单中按下ASCII字符#96时,将触发此代码 - 您可以使用此选项来禁用/修改此按键的“默认代码”。

$('#my_form_field').live('keypress', function(e) { 
    if (e.keyCode == 96) { 
     e.preventDefault(); 
     // Do stuff. 
    } 
}); 
相关问题