2007年5月21日(月) 12時01分56秒 [入力フォーム]
テキスト入力フォームで文字数を表示する
JavaScriptを使うと、テキストエリアなどの文字列入力フォーム上で、ユーザが入力した文字数をカウントすることが簡単にできます。それを活用すると、テキストエディタのように、「現在の入力文字数」をリアルタイムに表示することもできます。
例えば、以下のように。
▼何か入力してみて下さい。文字数がカウントされて枠の下部に表示されます。
上記の入力欄(テキストエリア)に、何か適当な文字列を入力してみて下さい。すると、入力した瞬間に、テキストエリアの下部に「xxx文字」と文字数が表示されるはずです。
こんな感じで、簡単に文字数のカウントと表示が可能です。
この「文字数カウンタ付きテキストフォーム」を作るには、以下のようにソースを記述します。
まずは、HTMLソース。
<textarea cols="24" rows="3" onkeyup="ShowLength(value);"></textarea>
<p id="inputlength">0文字</p>
textarea要素で、複数行の入力欄を作っています。textarea要素でなくても、input要素で1行入力欄を作っても構いません。ここで重要なのは、onkeyupイベントハンドラを記述している点です。onkeyupは、「キーボードのキーが押されて、上がった(=離された)とき」に処理を行うためのイベントハンドラです。つまり、「何か文字が入力された直後(もしくは消された直後)」に処理を行うことができます。
onkeyupイベントハンドラで呼び出している「ShowLength」という関数は、あとから作ります。なお、引数に「value」という値を渡していますが、これはその入力欄に入力されたテキスト(全部)です。文字数をカウントするために渡しています。
最後に、「0文字」と書かれているp要素を用意しています。ここに、文字数のカウント結果を出力します。JavaScriptで内容を変更させるため、id属性を使ってid名「inputlength」を付けています。
さて、本題のJavaScriptソースです。
<script type="text/javascript"><!--
function ShowLength( str ) {
document.getElementById("inputlength").innerHTML = str.length + "文字";
}
// --></script>
上記では、先ほどのonkeyupイベントハンドラで呼び出される「ShowLength」関数を作っています。
処理内容は非常に簡単で、引数で渡された値の長さ(length)を数えて、「inputlength」というidの振られている要素に書き出しているだけです。
引数は変数strに格納されています。「str.length」のようにlengthプロパティを参照することでその文字数が得られます。あとは、getElementByIdメソッドで出力位置を特定して、innerHTMLプロパティを使って、要素の内容を書き換えています。
以上で、テキストエディタのステータスバーなどのように、「入力された文字列の数をカウントして表示」する機能ができあがります。
この日記へのコメントはお気軽に! コメント数:0 トラックバック数:0
| « 「OK/キャンセル」ダイアログを表示して確認する |
前後のエントリ < 旧 / 新 > | ページの最終更新日を表示する » |
JavaScript TIPS 主要なカテゴリ
現在、以下のカテゴリに区分してTIPSを公開しています。