以下のようなスクリプトで、テキストエリアに入力された文字のバイト数をカウントしているのですが、
あらかじめテキストエリアに文字が入力されてる場合に「0文字」と表示されます。
ページを開いたとき、あらかじめテキストエリアに文字が入力されてる場合に、そのバイト数を
表示させる方法はあるでしょうか。
もし、おわかりになる方がおられましたら、ご教示いただければ幸いです。
function ShowLength( str ) {
len = 0;
for(i=0;i<str.length;i++) {
var c = str.charCodeAt(i);
if ( (c >= 0x0 && c < 0x81) || (c == 0xf8f0) || (c >= 0xff61 && c < 0xffa0) || (c >= 0xf8f1 && c < 0xf8f4)){
len += 1;
}
else { len += 2; }
}
document.getElementById("inputlength").innerHTML = len + "文字";
}
<textarea onkeyup="ShowLength(this.value);"></textarea>
ちなみに、onload="ShowLength(this.value);"では上手くいきませんでした。
宜しくお願い申し上げます。
No.4ベストアンサー
- 回答日時:
下記javascriptをそのままHTML内の該当箇所に追記すれば、たぶん動きます。
ただし、No.3にも書きましたが、HTML上のどこで外部javascriptが読み込まれているかによって、動いたり動かなかったりします。
------------------------------------------
<textarea name="sitecomment" onkeyup="ShowLength(this.value);"></textarea>
<p id="inputlength">0文字</p><br />
<!--↓これ-->
<script type="text/javascript">
ShowLength(document.getElementById("sitecomment").value);
</script>
------------------------------------------
ご回答ありがとうございます。
ご教示を頂きました方法で見事に表示できました。
誠にありがとうございます。
一部、cookieに保存された内容などを表示した場合に、動作しないケースがありましたが、
以下のようにして、ページを読み込んだあとに実行することで解決できました。
<script type="text/javascript">
window.onload=function(){
ShowLength(document.getElementById("comment").value);
}
</script>
onloadを使うのは、あまり良くないとご指摘を受けそうですが……
この度は何度もご回答を頂きまして、大変に感謝しております。
どうもありがとうございました。
No.3
- 回答日時:
プログラムはどのタイミングで実行するかが非常に重要です。
提示されたコードで何をしているかは分かりますが、どこにどのように書かれたものかわからないので、回答できません。
つまり、ShowLength関数の箇所だけ修正しても動きませんよ。
あと、javascriptをまったくご存知ないようなので、質問者さんには荷が重い作業だと思います。
分からないという質問には回答できますが、結果、全部やってくれというのは回答がつきにくいですよ。
ご回答ありがとうございます。
外部ファイルから関数を呼び出して、サーチエンジン登録画面のサイト紹介文入力のところに使用しております。
--- 外部ファイル ---
function ShowLength( str ) {
len = 0;
for(i=0;i<str.length;i++) {
var c = str.charCodeAt(i);
if ( (c >= 0x0 && c < 0x81) || (c == 0xf8f0) || (c >= 0xff61 && c < 0xffa0) || (c >= 0xf8f1 && c < 0xf8f4)){
len += 1;
}
else { len += 2; }
}
document.getElementById("inputlength").innerHTML = len + "文字";
}
--- HTML入力フォーム ---
▼コメント<br />
<textarea name="sitecomment" onkeyup="ShowLength(this.value);"></textarea>
<p id="inputlength">0文字</p><br />
これで<head>~</head>の間で外部ファイルを呼び出して、正常に動作しております。
ただ、登録されているサイトの更新をする場合に更新ページを呼び出したとき、
テキストエリアには既に登録時に入力した紹介文が入力されている訳ですが、「0文字」となっている状態です。
テキストエリア内でカーソルを動かすと入力されているバイト数に表示が更新されますが、
出来れば、更新ページを読み込んだときに「0文字」のところを既に入力されている文字のバイト数にしたいわけです。
難しいようでしたら、今回は諦めようと思います。
この度は、何度も回答を頂き、誠にありがとうございます。
No.2
- 回答日時:
>出来れば昔のまま使用したいと思い、質問させて頂きました。
表現がおかしかったかもしれませんが、新しい、古いは特に問題ではなくて、onloadやonkeyupを使わずに参照すればよいという回答です。特にjqueryを使わなければならないということもありません。
それともどうしてもonloadやonkeyup属性を使いたいのでしょうか。
端的に言えば、textare要素よりも後に
<script>
var str=document.getElementById("textareaID").value;
</script>
を書けば参照できます。
ご回答ありがとうございます。
いえいえ、ご回答を頂けて感謝しております。
どうしてもonloadやonkeyup属性を使いたい訳ではございません。
カウント文字数の表示部は以下のようになっているのですが、
お教え頂いた方法で取得した文字数をそこに表示させるにはどのようにすれば良いのでしょうか。
<p id="inputlength">0文字</p>
素人で申し訳ございません……。
No.1
- 回答日時:
htmlの要素に直接onloadとかonclickを記述する方法は、完全に昔のやり方で効率が悪いです。
今は、htmlに依存せずに外部ファイルのjavascriptからhtmlを参照するのが一般的でしょう。
たとえば、普及しているjQueryというライブラリを使えば、
var len=$('textarea').val().lgenth;
と書くだけで参照できます。
onloadやonkeyupなんて必要ありません。
厳密に言うなら、jqueryを読み込んだ後に、ready関数の中に書きます。
詳しくはjqueryを調べてみてください。
ご回答ありがとうございます。
実装したのが随分と昔のことなので申し訳ございません。
jqueryを使用する方法があることは調べて少し知っていましたが、
改行されたときのカウント数をOSやブラウザ毎に細かく場合分けしたりしておりまして、
出来れば昔のまま使用したいと思い、質問させて頂きました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- JavaScript Javascriptが機能せず原因が分からないので教えて頂きたいです 3 2023/06/04 14:50
- C言語・C++・C# str[j++]の意味 2 2022/08/30 16:20
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# プログラミングの問題です。至急教えてください。 /***から***/の部分をプログラミングにしてほし 1 2022/10/13 11:48
- JavaScript 以前の質問だと、どの条件でも配列が表示されてしまいます。 1 2022/07/09 11:40
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- C言語・C++・C# sprintf()の使い方について 1 2022/08/17 16:16
- JavaScript セレクトボックスで配列を呼び出したい。 1 2022/07/08 20:14
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
キーボードの数字のキーだけを...
-
文末の改行コードを削除したい
-
onClickとsubmitの処理順序
-
return trueとreturn falseの用...
-
追加ボタンを押した際に ok ボ...
-
チェックボックスのON/OFFでVal...
-
<form action="#">の意味とは?
-
jQuery セレクトボックスで選択...
-
フォームが空欄の時にフォーム...
-
【jQuery】input nameの文字列...
-
新しくフォルダを作成したい
-
javascriptの値をformのinput h...
-
正規表現で複数マッチ条件で悩...
-
マイナスなら赤字で表示したい...
-
チェックボックスの設定
-
ラジオボタンでポップアップメ...
-
javascriptで画像の移動
-
特定<table>内の<td>の色を変える
-
テーブルで複数行をまとめて非...
-
子ウィンドウを閉じるとき、親...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
onClickとsubmitの処理順序
-
テキストボックス入力を半角英...
-
PDFフォームで条件つき金額を表...
-
フォームの値が0だったら空白...
-
javascriptで入力フォームが空...
-
条件により、リンク先に画面遷...
-
フォームから入力すると、入力...
-
VBScriptで未入力のチェック(...
-
日付入力欄の表示形式を自動的...
-
Javascriptが機能せず原因が分...
-
submit後、同じ入力欄に戻らせ...
-
テキストフィールドに入力した...
-
JSPとJavaScriptの連携について...
-
最初の入力を判断
-
イベント発生時に入力待ち状態...
-
過去日付、年の切り替え
-
カレンダーをテキストエリアに...
-
入力した文字を大文字に変換し...
-
リンククリック → テキスト自...
-
javascriptで入力禁止文字をチ...
おすすめ情報