JavaScriptのselectイベントについて書いています。
selectイベントは、ユーザーがテキストボックスやテキストエリアで文字列を選択したときに発生します。
下記について書いています。
・selectイベントの設定方法
・selectイベントをテキストボックスとテキストエリアで使う
selectイベントとは?
select
イベントは、テキストボックスやテキストエリア内でユーザーがテキストを選択したときに発生します。
このイベントを使用することで、選択されたテキストを取得したり、特定の動作を実行することが可能です。
selectイベントを設定する
select
イベントの設定には、onselect
属性を直接使う方法とaddEventListener
メソッドを使用する方法があります。
DOMの属性を使って設定する
onselect
属性を使うことで、select
イベントを設定することができます。
例えば、下記のように使うことができます。
<!DOCTYPE html>
<html lang="ja">
<head>
<title>onselect Example</title>
</head>
<body>
<input type="text" onselect="handleSelect()">
<div>選択したテキスト: <span id="selectText"></span></div>
<script>
function handleSelect() {
const selectText = document.querySelector('#selectText');
selectText.innerHTML = window.getSelection().toString();
}
</script>
</body>
</html>
HTMLの解説
画面としてはinput
タグを使って、テキストボックスを用意しています。
その下に選択したテキストを表示する場所を作りました。
input
タグにonselect
属性を設定しています。
これで文字列を選択すると、渡している関数(handleSelect
)を実行してくれます。
JavaScriptの解説
script
タグにhandleSelect
関数を用意しています。
document.querySelector
を使って、選択したテキストを表示するspan
タグ(selectText
)を取得しています。
「window.getSelection().toString()
」とすることで、選択したテキストを取得できます。
そして取得した文字列を、selectText
のタグ内に入れるようにしました。
動作確認
実際に動作を確認してみると、下記のようになりました。
テキストボックスの文字列を選択すると、span
タグに表示されていることが確認できます。
addEventListenerを使ってイベントを設定する
addEventListener
メソッドを使うことでも、select
イベントを設定することができます。
<!DOCTYPE html>
<html lang="ja">
<head>
<title>onselect Example</title>
</head>
<body>
<input type="text" id="inputText">
<div>選択したテキスト: <span id="selectText"></span></div>
<script>
window.onload = () => {
const inputText = document.querySelector('#inputText');
inputText.addEventListener('select', function() {
const selectText = document.querySelector('#selectText');
selectText.innerHTML = window.getSelection().toString();
});
}
</script>
</body>
</html>
HTMLの解説
先ほどと同じようにテキストボックスとテキストを表示する場所を用意しています。
違うのはinput
タグに、onselect
属性をつけていないところです。
JavaScriptの解説
window.onload
で画面が読み込まれたときに処理するようにしています。
最初にテキストボックス要素(inputText
)を取得しています。
そして、テキストボックス要素からaddEventListener
メソッドを呼び出して、select
イベントを設定しました。
第1引数がイベント名で、第2引数の関数がイベントが発生したときに処理される内容です。
先ほどと同様に、選択したテキストを表示する場所(selectText
)を取得して
選択した文字列を入れるようにしています。
実際に動作を確認してみると、テキストボックスの選択した内容が表示されることが確認できました。
selectイベントをテキストボックスとテキストエリアで使う
select
イベントをテキストボックスとテキストエリアの両方で使ってみました。
<!DOCTYPE html>
<html lang="ja">
<head>
<title>onselect Example</title>
</head>
<body>
<input type="text" id="inputText1" /><br>
<textarea type="text" id="inputText2"></textarea><br>
<div>選択したテキスト: <span id="selectText"></span></div>
<script>
window.onload = () => {
const inputText1 = document.querySelector('#inputText1');
const inputText2 = document.querySelector('#inputText2');
const showInputText = function() {
const selectText = document.querySelector('#selectText');
selectText.innerHTML = window.getSelection().toString();
}
inputText1.addEventListener('select', showInputText);
inputText2.addEventListener('select', showInputText);
}
</script>
</body>
</html>
HTMLの解説
テキストボックス(inputText1
)とテキストエリア(inputText2
)を用意しています。
また、選択したテキストを表示する場所(selectText
)を作りました。
JavaScriptの解説
画面を読み込んだ時に処理されるようにしています。
テキストボックス(inputText1
)とテキストエリア(inputText2
)を取得して、select
イベントを設定しました。
処理としては、それぞれの場所で文字列が選択されたときに、文字が表示されるようにしました。
動作確認
動作を確認してみると、テキストボックスとテキストエリアのそれぞれで、文字列が選択されると表示されるようになりました。
終わりに
今回はselect
イベントについて確認していきました。
記事の内容をまとめると、下記のようになります。
・テキストボックスとテキストエリアで発生することが確認できた。
・選択したテキストは`window.getSelection().toString()`で取得できた。
コメント