2017-12-07 7 views
3

キーボードの「1」を押した後に特定のコンテンツを埋めたいHTML要素があります。 私は次のコードが含まれている外部.jsファイルを使用します。jQueryのkeyeventが機能しない

$(document).ready(function() { 
    $("#myid").html("Hello, 0111"); 
    $("#myid2").html("Lorem Ipsum"); 


    $(document).keyup(function (pressed_key) { 
     if (pressed_key.key === "1") { 
      $("#myid").html("Button pressed"); 

      setTimeout(function() { 
       $("#myid").html("Button not pressed"); 
      }, 1000); 
     } 
    } 

}); 

を私のHTML本体は、次のようになります。

<body> 
    <div id="myid">0129</div> 
    <div id="myid2"></div> 
    <script src="js/libs/jquery/jquery.min.js"></script> 
    <script src="js/script.js"></script> 
</body> 

コードが動作していない、それはHTML文書の内容を出力します。

しかし、私が.keyup関数をコメントアウトすると、残りのJavaScriptコードが動作し、それに応じてHTMLコンテンツが変更されます。

アイデア?

+1

'space'チャットを確認するには、あなたはサンプルのため、整数である' pressed_key.which'を、チェックして、スペースのASCIIコードを試すことができます: '32'。次に、 'if(pressed_key.which === 32){...}'を試してください。 –

+1

ステップ1、いつでも&次回に尋ねることなく、お願いしていただきありがとうございます:ブラウザのコンソールを確認してください! 'setTimeout(functionfunction(){'あなたのコードを16進エディタにコピー&ペーストすると、 '... out'の間に' ef bf bc'というバイトシーケンスがあることがわかります。 '' Uncaught SyntaxError:Invalid or unexpected token ' (Fun...) - その部分を再入力してください – CBroe

答えて

2

keyupハンドラに渡される引数が、入力された文字の値ではなく、イベントであるためです。あなたはkeyUpイベントにイベントを渡す必要が

$(document).ready(function() { 
 
    $("#myid").html("Hello, 0111"); 
 
    $("#myid2").html("Lorem Ipsum"); 
 

 
    $(document).keyup(function(e) { 
 
    if (String.fromCharCode(e.which) === "1") { 
 
     $("#myid").html("Button pressed"); 
 

 
     setTimeout(function() { 
 
     $("#myid").html("Button not pressed"); 
 
     }, 1000); 
 
    } 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="myid">0129</div> 
 
<div id="myid2"></div>

+0

これは正しく機能しました。jQueryのGoogleソースを使用する利点は何ですか?クライアントがそこから取得できるように、サーバーにロードしました。 – WalterBeiter

0

:このあなたはこのように、文字を取得するには、イベントのwhich性質とともに、String.fromCharCode()を使用することができますを修正するには

入力された文字の値ではなくハンドラを処理します。

$(document).ready(function() { 
    $("#myid").html("Hello, 0111"); 
    $("#myid2").html("Lorem Ipsum"); 

    $(document).keyup(function(event) { 
    if (String.fromCharCode(event.which) === "1") { 
     $("#myid").html("Button pressed"); 

     setTimeout(function(){ 
     $("#myid").html("Button not pressed"); 
     }, 1000); 
    } 
    }); 
}); 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<div id="myid">0129</div> 
<div id="myid2"></div> 
関連する問題