キーダウンでキー押下イベントを停止する方法。
Keypressイベントを停止する必要があるという点で、キーダウンハンドラがあります。
実際、フォームとテキストボックスが入っています。
whnユーザーが「Enter」キーを押し、キーを押してイベントをトリガーし、ハンドラーを使用します。
フォーム送信はキープレスでトリガーされるため、キーダウンハンドラーでキープレスイベントを停止する必要があります。
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を返します
オペラでは、keypress
イベントを使用して、キーボードイベントのデフォルトアクションを防止する必要があります。 keydown
は、オペラではなく、すべてのブラウザーでデフォルトのアクションを防止するように機能します。
ブラウザ間のキーボード処理の この矛盾の長いリスト を参照してください。
event.cancelBubble = true
イベントハンドラ。
ここで、上/ dn /左/右キーのイベントバブリングを停止しました。
$(document).on("keydown", function(e) {
if(e.keyCode >= 37 && e.keyCode <= 40) {
e.stopImmediatePropagation();
return;
}
});
上記の回答からe.preventDefaultまたはevent.cancelBubble = trueも試しましたが、影響はありませんでした。
Event.preventDefault();を取得できました。 SafariおよびFirefoxで動作しますが、IE7またはIE8では動作しません。
Enterキーのみを無効にする場合は、キーの値(Enterの場合は13)も確認し、そのキーのevent.preventDefault()のみを設定していることを確認してください。
IE7/8またはOperaの答えを思い付くことができる人はいますか?
書く、
<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>
キーダウンハンドラーで。