ホームページ作成/フォームの活用・装飾 (HTML,CSS,JavaScript)

長さを変更できるテキスト入力欄を作る(4ページ目)

入力欄が狭すぎると長文が入力しにくくなります。しかし広すぎるとページが見渡しにくくなってしまいます。ユーザが自ら入力欄の大きさを調節できるような「編集領域の増減機能」付き入力欄を作ってみましょう。

西村 文宏

執筆者:西村 文宏

ホームページ作成ガイド

STEP.4 編集領域の最小行数と最大行数を指定

編集領域を狭くしすぎると入力しにくくなりますし、0行以下にするとエラーになる場合があります。 また、広くしすぎても使いにくくなります。 ですから、スクリプト中に最小行数と最大行数を指定しておき、その範囲外には変化しないようにしてみましょう。

STEP.2で記述したスクリプトを、以下のソースと差し替えて下さい。(※STEP.2のJavaScriptソースは消して、代わりに以下のソースを使います。)

<script type="text/javascript">
   function ExtendTextarea(size) {
      var MinSize = 3;   // 最小行数
      var MaxSize = 20;  // 最大行数
      var NowSize = document.exform.excomment.rows;
      var SetSize;
      if( NowSize + size < MinSize ) {
         // 最小サイズを下回るなら最小サイズにする
         SetSize = MinSize;
      }
      else if( NowSize + size > MaxSize ) {
         // 最大サイズを上回るなら最大サイズにする
         SetSize = MaxSize;
      }
      else {
         // 範囲内の変化ならそのまま変化させる
         SetSize = NowSize + size;
      }
      document.exform.excomment.rows = SetSize;
   }
</script>

上記では、最小行数を「3」、最大行数を「20」としています。この値は自由に修正して下さい。
また、フォームの名称(exform)とテキスト入力欄の名称(excomment)を記述する箇所がそれぞれ2カ所ずつあります。 もし異なる名称を使っている場合は、上記のソース中でも修正するのを忘れないで下さい。

  • 「 exform 」は、form要素のname属性の値(フォームの名称)です。
  • 「 excomment 」は、textarea要素のname属性の値(テキスト入力欄の名称)です。

上記のスクリプトを使うと、以下のように見えます。(見た目は変化していませんが、3行よりも小さくはできず、20行よりも大きくはできなくなっています。)

コメント:

これで、エラーが発生せず、小さくなりすぎたりも大きくなりすぎたりもしない増減機能ができあがりました。

[注] Safariでは

Safariでは、入力欄の右下をマウスでドラッグすることで、ユーザが自由に入力欄の大きさを変化させられます。 Safariでも今回ご紹介した機能は使えますが、 一度ユーザがマウスを使って自由に大きさを変化させると、その後はボタンをクリックしても変化しなくなるなるようです。

Safariでのテキスト入力欄
▲編集領域の端をドラッグすることで自由に広げられる(Safari3)

おわりに

今回は、ユーザが自由に編集領域を増減できるテキスト入力欄の作り方をご紹介いたしました。 アクセス者が長文を入力する可能性のあるような、掲示板の投稿フォームやメッセージ送信フォームなどで使ってみて下さい。

【編集部おすすめの購入サイト】
楽天市場でホームページ作成関連の書籍を見るAmazon でホームページ作成の参考書を見る
  • 前のページへ
  • 1
  • 2
  • 3
  • 4
※記事内容は執筆時点のものです。最新の内容をご確認ください。
※OSやアプリ、ソフトのバージョンによっては画面表示、操作方法が異なる可能性があります。

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

    All About公式SNS
    日々の生活や仕事を楽しむための情報を毎日お届けします。
    公式SNS一覧
    © All About, Inc. All rights reserved. 掲載の記事・写真・イラストなど、すべてのコンテンツの無断複写・転載・公衆送信等を禁じます