web-dev-qa-db-ja.com

キー押下イベントを停止

キーダウンでキー押下イベントを停止する方法。

Keypressイベントを停止する必要があるという点で、キーダウンハンドラがあります。

実際、フォームとテキストボックスが入っています。

whnユーザーが「Enter」キーを押し、キーを押してイベントをトリガーし、ハンドラーを使用します。

フォーム送信はキープレスでトリガーされるため、キーダウンハンドラーでキープレスイベントを停止する必要があります。

29
Santhosh
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を返します

43
john

オペラでは、keypressイベントを使用して、キーボードイベントのデフォルトアクションを防止する必要があります。 keydownは、オペラではなく、すべてのブラウザーでデフォルトのアクションを防止するように機能します。

ブラウザ間のキーボード処理の この矛盾の長いリスト を参照してください。

4
treecoder

event.cancelBubble = trueイベントハンドラ。

1
zzandy

ここで、上/ dn /左/右キーのイベントバブリングを停止しました。

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

上記の回答からe.preventDefaultまたはevent.cancelBubble = trueも試しましたが、影響はありませんでした。

1
Gerfried

Event.preventDefault();を取得できました。 SafariおよびFirefoxで動作しますが、IE7またはIE8では動作しません。

Enterキーのみを無効にする場合は、キーの値(Enterの場合は13)も確認し、そのキーのevent.preventDefault()のみを設定していることを確認してください。

IE7/8またはOperaの答えを思い付くことができる人はいますか?

0
harwig

書く、

    <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>

キーダウンハンドラーで。

0
adatapost