40

keypressでイベントを停止する方法keydown

イベントを停止する必要があるというkeydownハンドラーがあります。keypress

実際にはフォームとテキストボックスがあります。

ユーザーがenterキーを押すkeydownと、イベントがトリガーされ、ハンドラーがあります。

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

4

7 に答える 7

62
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を返すと、イベントの伝播が停止します

于 2009-09-10T10:56:10.967 に答える
4

Opera では、イベントを使用してkeypress、キーボード イベントのデフォルト アクションを防止する必要があります。keydownすべてのブラウザーでデフォルト アクションを防止しますが、opera では防止しません。

ブラウザー間でのキーボード処理の不一致については、こちらの長いリストを参照してください。

于 2011-11-14T10:00:33.423 に答える
4

ここでは、up/dn/left/right キーのイベント バブリングを停止しました。

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

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

于 2017-11-03T12:53:18.050 に答える
1

書く、

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

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

于 2009-09-10T10:56:34.367 に答える
1

event.cancelBubble = trueイベントハンドラで試してください。

于 2009-09-11T15:23:32.750 に答える
0

event.preventDefault(); を取得できました。Safari と Firefox では動作しますが、IE7 や IE8 では動作しません。

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

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

于 2010-01-22T21:18:22.810 に答える