• Home
  • textareaでの改行をさせないようにする方法

textareaでの改行をさせないようにする方法

記事のサムネイル

この記事ではCompositionEventを利用せずにtextareaでの改行をさせないようにする方法を紹介します。

結論

下記のコードで実現可能です。

$("#hoge").on("keydown", function(event) {
  // エンターキーが押された場合に無効にする
  if (event.key === "Enter") {
    event.preventDefault(); // デフォルトのエンターキーの挙動をキャンセル
  }
});

#hogeはtextarea要素に指定したidになります。(idじゃなくてclass属性等でも大丈夫です)

前提として、改行させたくないなら<input type="text">を使えば良いと思ってます。

が、<input type="text">だと入力している文字が入力欄より多くなると、折り返し表示されずに文字が流れていってしまいます。

改行をさせないようにしたいけど、文字は折り返し表示したいという場合にこの方法が使えます。

別の方法

下記のようにCompositionEventを利用して改行を制御する方法もありますが、コードが長くなるので基本的には上記で紹介している方法で良いと思います。

let isComposing = false;

// IMEの入力開始を検知
$("#note-field").on("compositionstart", function() {
  isComposing = true;
});

// IMEの入力完了を検知
$("#note-field").on("compositionend", function() {
  isComposing = false;
});

// キー入力を検知
$("#note-field").on("keydown", function(event) {
  // エンターキーが押されたかつIME入力中でない場合にフォーカスを外す
  if (event.key === "Enter" && !isComposing) {
    event.preventDefault(); // デフォルトのエンターキーの挙動をキャンセル
  }
});

実装やエラーが解決できない場合

プログラミングの実装やエラーでどうしてもわからない場合はメンターに相談するのが一番です。

考えている、見えている範囲が狭くなり、解決から遠くに行って何時間も、何日も経っていることなんてよくある話です。

そういう時は聞ける先輩や、メンターに相談することが大事です。

僕にも相談可能なので気軽に相談してください。

ご相談はこちら
(Twitterのプロフィールへ飛びます)

OTHER ARTICLES

  • Web制作

  • Rails

railsでjsではなくrubyでtooltipの単位を設定するときの話

2024/08/20
  • Web制作

  • Rails

Railsにおけるクラスメソッドとインスタンスメソッドの違いについて

2024/05/30
  • Web制作

  • Docker

  • Rails

DockerでRails7 + PostgreSQL + esbuildの環境を構築する方法

2024/05/16
  • Web制作

  • Rails

  • Docker

Dockerで建てたrails7環境で「undefined method `devise' for 〜」が発生した話

2024/05/16
  • Web制作

  • Rails

Ruby on RailsのルーティングとRESTfulルート

2024/05/09
  • Web制作

  • Rails

Ruby on Railsにおけるresourceとresourcesの違い

2024/05/01
管理者のイメージ画像

PROFILE

Youta

山口県出身の現役のWebエンジニアです。仕事を通して学んだことや、生活していく中で学んだことを発信していきます。

CATEGORY