如何在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