JavaScriptで入力に合わせてHTMLテキストフィールドを自動的に拡張する方法
通常の <input type="text"> 要素は幅が固定されているため、入力した文字数に応じて自動的に伸びることはありません。このような場合は、<span> 要素を使用するのが効果的です。span はインライン要素なので、内包するテキストの量に応じて自然に幅が広がります。
ポイント:contenteditable属性の設定
<span> はそのままでは編集できません。ユーザーが入力できるようにするには、contenteditable="true" を必ず設定してください。
contenteditable="true"
実装例
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<link rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/fontawesome/4.7.0/css/font-awesome.min.css">
<style>
span{
border: solid 2px skyblue;
display: inline-block;
min-width: 50px;
padding: 4px 8px;
}
div{
max-width: 500px;
}
</style>
</head>
<body>
<div>
<span contenteditable="true">John Smith</span>
</div>
<script>
</script>
</body>
</html>
コードの解説
- span要素:枠線(skyblue)を付けて入力領域であることを視覚的に示しています。
- display: inline-block と min-width:中身が空になった場合でもフィールドが潰れないよう、最小幅を確保しています。
- div の max-width:長文を入力してもレイアウトが崩れないよう、親要素の最大幅を500pxに制限しています。
プログラムの実行方法
上記のプログラムを実行するには、ファイル名を「anyName.html」(index.html)として保存し、そのファイルを右クリックします。VS Codeエディターの場合は、「Open with Live Server」を選択するとブラウザ上で確認できます。
出力結果
このプログラムを実行すると、以下のような出力が得られます。テキストを入力するにつれて、枠線付きのフィールドが文字数に応じて自動的に横へ広がっていきます。

-
HTML DOM Input Text typeプロパティの使い方を徹底解説
HTML DOMのInput Text typeプロパティは、テキスト入力フィールド(<input type=text>)のtype属性の値を取得または設定するためのプロパティです。JavaScriptから動的に入力フィールドの種類を確認したり変更したりしたい場合に活用できます。 構文 typeプロパティの基本的な構文は以下の通りです。 type属性の値を取得する場合(文字列として返却) inputTextObject.type type属性に新しい値を設定する場合 inputTextObject.type = stringValue 設定できる文字列値 「string
-
HTML DOMのInput Textオブジェクトとは?基本構文・プロパティ一覧と実例コードを解説
HTML DOMのInput Textオブジェクトは、<input>要素のうちtype=textが指定された要素に対応するオブジェクトです。テキスト入力欄を表すこのオブジェクトは、新規に作成する場合はcreateElement()メソッドを、既存の要素へアクセスする場合はgetElementById()メソッドを使用します。本記事では、Input Textオブジェクトで利用できる主なプロパティの一覧と、基本的な構文、実際に動作するサンプルコードをわかりやすく解説します。Input Textオブジェクトの主なプロパティInput Textオブジェクトには、以下のようなプロパティが用意