2009-09-10 96 views
27

如何在keydown停止按键事件。停止按键事件

我有一个keydown处理程序,我需要停止按键事件。

其实我有一个窗体和文本框在里面。

当用户按“输入”键,keydown我触发事件和处理程序。

表单提交将在按键中触发,所以我需要停止我的keydown处理程序中的按键事件。

回答

33
function onKeyDown(event) { 
    event.preventDefault(); 
} 

http://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-Event-preventDefault

function onsubmit(event) { 
    return false; 
} 

返回FALSE来停止事件传播

+1

event.preventDefault();不在歌剧中工作 – Santhosh 2009-09-10 11:46:05

+0

var suppressEvent = false; function onKeyDown(event){ suppressEvent = true; event.preventDefault(); } function onKeyPress(event){ if(suppressEvent)event.preventDefault(); } – andho 2011-04-15 08:07:36

+0

非常感谢你@john。这帮了我一个问题,当我的自定义事件处理程序导致输入键移动到下表中的单元格时,_AND_在该新单元格中添加了不必要的额外新行。我只需要取消输入键的默认事件。 – 2016-10-26 16:49:22

0

写,

<script type="text/javascript"> 
     function keyDn(obj) 
     { 
     if(window["event"]["keyCode"]==48) // key 0 will disabled keyPress event 
     { 
      obj["onkeypress"]=null; 
      } 
     } 
     function keyPs(obj) 
     { 
     alert("Keypress"); 
     } 

    </script> 

    <form id="form1" runat="server"> 
    <div> 
    <input type="text" onkeydown="keyDn(this)" onkeypress="keyPs(this)" /> 
    </div> 
    </form> 

中的keydown的处理程序。

1

尝试在事件处理程序中使用event.cancelBubble = true

0

我能够得到event.preventDefault();在Safari和Firefox中工作,但不支持IE7或IE8。

如果您只想禁用回车键,请确保您还在检查该键的值(13为Enter)并仅设置event.preventDefault()。

任何人都能想出一个答案为IE7/8或Opera?

+0

我知道这是一个非常古老的线程,但由于你的问题仍然没有答案,我会。事实上,我最近发现了一个针对您指定问题的工作解决方法: 您在提交并隐藏并禁用您的提交按钮时使您的表单返回false。然后你创建第二个按钮(它不是提交类型的),它实际上将删除onsubmit事件的返回false属性,并删除按钮的禁用。之后,您可以使用此按钮来模拟实际提交按钮上的点击事件。你可以在这里找到一个工作示例: http://jsfiddle.net/rsauxil/qyf8L/6/。 – JohannesB 2013-08-28 14:11:13

3

在opera中,您必须使用keypress事件来防止键盘事件的默认操作。​​用于防止所有浏览器中的默认操作,但不在opera中。

请参阅this long list of inconsistencies跨浏览器的键盘处理。

0

在这里,我停止了事件冒泡的上/下/左/右按键:

$(document).on("keydown", function(e) { 
     if(e.keyCode >= 37 && e.keyCode <= 40) { 
      e.stopImmediatePropagation(); 
      return; 
     } 
    }); 

我也试过e.preventDefaultevent.cancelBubble =真从上面的答案,但他们没有影响。