プロが教えるわが家の防犯対策術!

JavaScriptで以下のようにテキストエリアで入力文字数を表示させているのですが、
全角文字も半角文字も同じ1文字としてカウントされてしまいます。
入力された文字が全角なら2、半角なら1としてカウントするように出来ないでしょうか?
================================================================
/*テキスト入力フォームで文字数を表示する*/
function ShowLength( str ) {
document.getElementById("inputlength").innerHTML = str.length + "文字";
}
----------------------------------------------------------------
<textarea cols="70" rows="10" onkeyup="ShowLength(value);" /></textarea>
<p id="inputlength">0文字</p>
================================================================
宜しくお願い致します。

A 回答 (2件)

こんにちは



文字数ではなくてバイト数で取ってみては?

<script type="text/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 + "文字";
}
//--></script>

<textarea cols="70" rows="10" onkeyup="ShowLength(this.value);" /></textarea>
<p id="inputlength">0文字</p>

もしくはmatchを使うとか

function ShowLength( str ) {
len = 0;
for(i=0;i<str.length;i++) {
STR = str.charAt(i);
if(STR.match(/\w/)) { len += 1; }
else { len += 2; }
}
document.getElementById("inputlength").innerHTML = len + "文字";
}
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
すごいです。出来ました。
どうもありがとうございます。
大変助かりました。

お礼日時:2008/02/27 07:15

<html><body>


<input type="text" id="str">
<input type="button" value="Count" onClick="alert(strlen($V('str')))">
<script>
function strlen(s){for(c=0,i=0;i<s.length;i++){n=escape(s.charAt(i));c+=(n.length<4)?1:2;}return c;}
function $V(o) {return document.getElementById(o).value;}
</script></body></html>
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
しかしCGIから書き出されたHTML上では
上手く動作しません。
どうすれば良いでしょうか?

お礼日時:2008/02/26 22:29

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!