jQuery: 文字数カウントツールの作り方(2)
jQueryで文字数カウントツールを作ります。その2
今回はテキスト入力フィールドを複数用意します。
そしてそれぞれのテキスト入力フィールドに対して文字数を表示。
動作サンプル、サンプルコード、コード解説の順番で記述しています。
動作サンプル
0文字
0文字
0文字
html
<div class="count">
<div class="num">0文字</div>
<textarea class="text" cols="30" rows="2"></textarea>
</div>
<div class="count">
<div class="num">0文字</div>
<textarea class="text" cols="30" rows="2"></textarea>
</div>
<div class="count">
<div class="num">0文字</div>
<textarea class="text" cols="30" rows="2"></textarea>
</div>
CSS
.count {
width: 90%;
margin-bottom: 20px;
}
.num {
font-weight: bold;
}
.text {
width: 100%;
}
JavaScript
$(document).ready(function(){ // テキストボックス初期化 $('.text').val(''); $('.text').on('keydown keyup keypress change', function(){ var str = $(this).val(); // 改行を取り除く str = str.replace(/\n/g, ''); var strCount = str.length + '文字'; // 前の要素に表示 $(this).prev().text(strCount); }); });
コード解説
要素にクラスを指定
<div class="count">
<div class="num">0文字</div>
<textarea class="text" cols="30" rows="2"></textarea>
</div>
文字数を表示するdiv要素、テキストを入力するtextarea要素にそれぞれクラスを指定します。 前回は1つだったのでIDを指定しましたが、今回は複数あるのでクラスを指定します。
イベント設定
// イベント設定 $('.text').on('keydown keyup keypress change', function(){ });
textarea要素のclass="text"を取得し、イベントハンドラを設定します。
文字数を表示
// 前の要素に表示 $(this).prev().text(strCount);
prev()メソッドを使うことで直前の要素を操作できます。 各textareaの直前にあるdiv要素に対して文字数を表示しています。
prev()メソッドはpre()と書き間違えやすいので注意が必要です。 pre()ではなく、prev()です。