JavaScriptでtextareaをShift + Enterで送信する実装
<div>
<textarea id="question" placeholder="質問を入力してください"></textarea>
<button id="sendBtn">送信</button>
</div>
document.getElementById("question").addEventListener("keypress", e => {
if (e.key === "Enter" && e.shiftKey) {
e.preventDefault();
const sendButton = document.getElementById("sendBtn");
if (sendButton) {
sendButton.click();
}
}
});
- 簡単な説明
-
addEventListener
:keypress
イベントを監視。 -
e.key === "Enter" && e.shiftKey
: EnterキーとShiftキーが同時に押されたかをチェック。 -
e.preventDefault()
: デフォルトの改行動作をキャンセル。 -
sendButton.click()
: 送信ボタンをクリックと同じ処理を走らせる。
-
・Shift + EnterではなくCtrl + Enterで送信したい場合は、e.shiftkey
をe.ctrlKey
にするだけ。