ホーム>source

私はこの素晴らしいウェブサイトのデータベースをチェックしましたが、どういうわけか提供された回答が機能しません。

グリッチを防ぐために、デフォルトでは矢印キーとスペースバーを無効にする必要があります。それはこのコードで動作します:

<前>ウィズウィズ

しかし、矢印キーとスペースバーは、ウェブサイトの特定の領域(入力およびテキストエリアフィールド)に必要です。許可するために、私は次のようにしました:

<前>ウィズウィズ

しかし、それは機能していないようです。どうぞよろしくお願いいたします!

window.addEventListener("keydown", function(e) { if([32, 37, 38, 39, 40].indexOf(e.keyCode) > -1) { e.preventDefault(); } }, false);
あなたの答え
  • 解決した方法 # 1

    この場合、1つのオプションは、すべての textarea のイベントハンドラーを設定することです。  そして input  要素と event.stopPropagation() の利用  ウィンドウイベントハンドラーが発生しないようにするため。これにより、要素はkeydownイベントをキャプチャし、DOMチェーンの上位にある要素(ドキュメントやウィンドウなど)の他のイベントハンドラーを起動しないようにJavaScriptエンジンに指示します。

    <前>ウィズウィズ

    そしてjQueryで:

    <前>ウィズウィズ

    編集:動作中のjsFiddle。

  • 解決した方法 # 2

    window.addEventListener("keydown", function(e) { if([32, 37, 38, 39, 40].indexOf(e.keyCode) > -1) { e.preventDefault(); } }, false); を使用して対象の要素名を取得できます  プロパティ:

    <前>ウィズウィズ

    次に、それを使用して条件付きでチェックできます。

    <前>ウィズウィズ

    フィドル

    // Function gets run after document is loaded $(function(){ $("textarea, input").keydown(function(e){ e.stopPropagation() }) });

  • 前へ java - JPAクエリ:サブクエリをグループ化条件に結合する
  • 次へ Rの一致を使用して、列のサブセットに2番目のデータフレームの値を乗算します