如何在keydown停止按键事件。停止按键事件
我有一个keydown处理程序,我需要停止按键事件。
其实我有一个窗体和文本框在里面。
当用户按“输入”键,keydown我触发事件和处理程序。
表单提交将在按键中触发,所以我需要停止我的keydown处理程序中的按键事件。
如何在keydown停止按键事件。停止按键事件
我有一个keydown处理程序,我需要停止按键事件。
其实我有一个窗体和文本框在里面。
当用户按“输入”键,keydown我触发事件和处理程序。
表单提交将在按键中触发,所以我需要停止我的keydown处理程序中的按键事件。
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来停止事件传播
写,
<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的处理程序。
尝试在事件处理程序中使用event.cancelBubble = true
。
我能够得到event.preventDefault();在Safari和Firefox中工作,但不支持IE7或IE8。
如果您只想禁用回车键,请确保您还在检查该键的值(13为Enter)并仅设置event.preventDefault()。
任何人都能想出一个答案为IE7/8或Opera?
我知道这是一个非常古老的线程,但由于你的问题仍然没有答案,我会。事实上,我最近发现了一个针对您指定问题的工作解决方法: 您在提交并隐藏并禁用您的提交按钮时使您的表单返回false。然后你创建第二个按钮(它不是提交类型的),它实际上将删除onsubmit事件的返回false属性,并删除按钮的禁用。之后,您可以使用此按钮来模拟实际提交按钮上的点击事件。你可以在这里找到一个工作示例: http://jsfiddle.net/rsauxil/qyf8L/6/。 – JohannesB 2013-08-28 14:11:13
在opera中,您必须使用keypress
事件来防止键盘事件的默认操作。用于防止所有浏览器中的默认操作,但不在opera中。
请参阅this long list of inconsistencies跨浏览器的键盘处理。
在这里,我停止了事件冒泡的上/下/左/右按键:
$(document).on("keydown", function(e) {
if(e.keyCode >= 37 && e.keyCode <= 40) {
e.stopImmediatePropagation();
return;
}
});
我也试过e.preventDefault或event.cancelBubble =真从上面的答案,但他们没有影响。
event.preventDefault();不在歌剧中工作 – Santhosh 2009-09-10 11:46:05
var suppressEvent = false; function onKeyDown(event){ suppressEvent = true; event.preventDefault(); } function onKeyPress(event){ if(suppressEvent)event.preventDefault(); } – andho 2011-04-15 08:07:36
非常感谢你@john。这帮了我一个问题,当我的自定义事件处理程序导致输入键移动到下表中的单元格时,_AND_在该新单元格中添加了不必要的额外新行。我只需要取消输入键的默认事件。 – 2016-10-26 16:49:22