1
<html>
<body onkeypress = "show_key(event.which)">
<form method="post" name="my_form">
The key you pressed was:
<input type="text" name="key_display" size="2"/>
</form>
<script type="text/javascript">
function show_key ( the_key )
{console.log(the_key);
       document.my_form.key_display.value = String.fromCharCode ( the_key );
}
</script>
</body>
</html>

上記のコードはこちらから: http://www.elated.com/articles/events-and-event-handlers/

質問:

1.フロント エンドで、a を入力すると、aa が表示されます。2 文字が表示されるのはなぜですか。a を 1 つだけ入力します。

2.show_key(event.which)ここでのイベントは「キーを押す」という意味ですが、イベントの名前を変更できますか? イベントをeに変更しようとしましたが、フロントエンドで入力:a、表示:aですが、コンソールでは次のようにも表示されます:ReferenceError: e is not defined

4

1 に答える 1

1

イベントを取得するには、次のようにハンドラーを呼び出す必要があります

<body onkeypress = "show_key(event)">

次に、関数内

function show_key ( e )
{
       var the_key = e.which;
        console.log(e.which);
       document.my_form.key_display.value = String.fromCharCode ( the_key );
}

二重入力については、二重入力ではありません。最初に key_Display 値を計算した文字列に設定し、イベントがハンドラーを通過すると、現在フォーカスされている入力フィールドにシンボルを追加します。Events Wonderland の詳細: http://www.w3.org/TR/DOM-Level-3-Events/#dom-event-architecture

常に同じ入力フィールドにフォーカスしたいだけなら、これはより簡単なアプローチです:

<body onload="focusMyInput">  
    <form method="post" name="my_form">
        <input type="text" id="my_input" onblur="focusMyInput" name="key_display" size="2"/>
...

var focusMyInput = function(){
   document.getElementById('my_input').focus();
}

このコードは、読み込み時に input#my_input がフォーカスされることを行い、ぼかしがかかる (フォーカスが失われる) 場合は、同じルーチンを実行してそれを回復します。

于 2013-06-25T07:12:21.737 に答える