Jqueryで動的に文字数カウントをしたかったので作成
着火イベントは onInputでやってました
(IE9以前ではonInputが動かないので注意)
条件
- 全角2文字
- 半角1文字
- 改行は2文字(CRLF CR LFすべて2文字)
以下、コード
// 引数について
// text カウントしたい文字列
// field カウントした文字数を挿入するid属性
function getLen(text, field){
var result = 0;
// ここで すべての改行コードを \nへ 変換し、文字数を取得
var textLength = text.replace(/\r\n/g, '\n').replace(/\r/g, '\n').length;
for (var i = 0; i < textLength ; i++){
var chr = text.charCodeAt(i);
if (chr === "\n".charCodeAt(0)) {
// 改行の場合は2を加算
result += 2;
}
else if ((chr >= 0x00 && chr < 0x81) ||
(chr === 0xf8f0) ||
(chr >= 0xff61 && chr < 0xffa0) ||
(chr >= 0xf8f1 && chr < 0xf8f4)) {
// 半角文字の場合は1を加算
result += 1;
} else {
// それ以外の文字の場合は2を加算
result += 2;
}
}
//結果を返す
document.getElementById(field).innerHTML = textLength;
};