JavaScriptのキーアップ(keyup)イベントについてまとめました。
下記について書いています。
・keyupイベントの設定方法
・keyupとkeydownイベントで背景色を変える
keyupイベントとは?
keyup
イベントは、ユーザーがキーボードのキーを押してから指を離した瞬間に発生するイベントです。
このイベントは入力フィールドや画面全体で利用でき、リアルタイムの文字入力確認やショートカットキーの実装などに役立ちます。
keyupを設定する
keyup
イベントの設定には、onkeyup
属性を直接使う方法とaddEventListener
メソッドを使用する方法があります。
DOMの属性を使って設定する
HTMLのonkeyup
属性を使って、直接イベントを設定する方法です。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>Keyupテスト</title>
<script>
function handleKeyup() {
const input = document.querySelector('#textInput').value;
document.querySelector('#output').textContent = `入力内容: ${input}`;
}
</script>
</head>
<body>
<input type="text" id="textInput" onkeyup="handleKeyup()" placeholder="キーを入力してください">
<p id="output"></p>
</body>
</html>
HTMLの解説
body
タグの配下にinput
タグを用意しています。
このテキストボックスに文字が入力され、キーボードのキーを離した時(キーアップ)に
設定しているonkeyup
属性のhandleKeyup
関数が呼び出されます。
JavaScriptの解説
handleKeyup
関数では、querySelector
メソッドを使っています。
そして、テキストボックスにアクセスし、値を取得してinput
変数に設定しています。
そのあとに、p
タグの要素に取得した値を表示しています。
動作確認
実際に動作を確認すると、下記のようにキーボードを入力して、キーがあがったときに入力した内容がp
タグに反映されました。
addEventListenerを使ってイベントを設定する
addEventListener
メソッドを使って、keyup
イベントを設定する方法です。
先ほどと同様の内容をaddEventListener
で実現しています。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>Keyupテスト</title>
<script>
window.onload = () => {
document.querySelector('#textInput').addEventListener('keyup', (event) => {
const input = event.target.value;
document.querySelector('#output').textContent = `入力内容: ${input}`;
});
}
</script>
</head>
<body>
<input type="text" id="textInput" placeholder="キーを入力してください">
<p id="output"></p>
</body>
</html>
HTMLの解説
body
タグの下に、先ほどと同じようにテキストボックスを用意しています。
今回はaddEventListener
メソッドで要素に対してイベントを追加するので、onkeyup
属性をつけていません。
JavaScriptの解説
window.onload
でページ読み込みが完了した時に、処理をするようにしました。
querySelector
メソッドでテキストボックスを取得しています。
そして、addEventListener
メソッドでkeyup
イベントを追加しました。
第1引数に渡しているのがイベント名で、第2引数に処理内容を書いています。
処理内容としては、引数のevent
オブジェクトを取得しています。
そして、event.target.value
で入力された内容を取得して、p
タグの要素に取得内容を表示しています。
処理を実行すると、先ほどと同様に、入力されてキーが上げられてからイベントが走ることが確認できました。
keyupとkeydownイベントで背景色を変える
keyup
とkeydown
イベントを組み合わせて使っているサンプルです。
画面上でキーを押し込んだ時に、指定した要素の背景色を変えて、キーが上がったら元の色に戻すようにしてみました。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>KeydownとKeyupの組み合わせ</title>
<style>
body {
text-align: center;
padding: 20px;
}
#display {
width: 300px;
height: 150px;
border: 1px solid #000;
margin: 20px auto;
background-color: yellow;
}
</style>
<script>
window.onload = () => {
const display = document.querySelector('#display');
// keydownで背景色を青に変更
document.addEventListener('keydown', function() {
display.style.backgroundColor = 'lightblue';
});
// keyupで背景色を白に戻す
document.addEventListener('keyup', function() {
display.style.backgroundColor = 'yellow';
});
};
</script>
</head>
<body>
<div id="display">背景が変わります</div>
</body>
</html>
HTMLの解説
body
タグの配下には、色を変えるためのdiv
タグを用意しています。
id
としてdisplay
を設定しました。
style
タグ配下でcss
を書いていて、初期の背景として黄色にしています。
JavaScriptの解説
window.onload
でページが読み込み終わってから処理しています。
querySelector
メソッドで、display
が設定されているdiv
タグ要素を取得しています。
そして、keydown
イベントの時には、div
タグの背景色を青色(lightblue
)に設定しています。
keyup
イベントの時には、div
タグの背景色を黄色(yellow
)に戻すようにしました。
document
にaddEventListener
メソッドで設定しているため、ページ全体でイベントが発生します。
動作確認
動作を確認すると、下記のようになりました。
初期は黄色で、キーを押し込んでいるときは青色になって、キーから指を離すと黄色に戻ります。
JavaScriptでkeyupを設定する方法まとめ
JavaScriptでkeyupイベントを設定する方法について確認しました。
記事の内容をまとめると、下記のようになります。
・keyupイベントはonkeyupやaddEventListenerを使うことで設定できた。
・keydownとkeyupを同じ要素に設定して、動作することが確認できた。
コメント