【Javascript】全角/半角の文字数チェック

全角/半角の文字数チェック、 ・入力欄の文字のバイト数を表示するスクリプトです。 ・全角と半角が混在する文字列も正確にカウントすると思います。 ・VBScriptのコードも記述しています。


<html>
<head><title>文字数チェック</title>
</head>
<script language="VBScript">
FUNCTION fncVBS_Check
	DIM w_DATA
	DIM intLoop
	DIM intAscii
	DIM intHANKAKU_CNT
	DIM intZENKAKU_CNT
	DIM intBYTE_CNT

	intHANKAKU_CNT = 0
	intZENKAKU_CNT = 0

	w_DATA = Trim(frmMain.txtMOJIRETU.Value)
	For intLoop = 1 To Len(w_DATA)
		intAscii = Asc(Mid(w_DATA, intLoop, 1))
		If(0 <= intAscii And intAscii <= 255) Then
			intHANKAKU_CNT = intHANKAKU_CNT + 1
		Else
			intZENKAKU_CNT = intZENKAKU_CNT + 1
		End If
	Next
	intBYTE_CNT = intHANKAKU_CNT + (intZENKAKU_CNT * 2)
	divRESULT.innerTEXT = "半角:" & intHANKAKU_CNT & " , 全角:" & intZENKAKU_CNT & " , 全体バイト数:" & intBYTE_CNT
END FUNCTION
//-->
</script>
<script type="text/javascript">
<!--
function fncJVS_Check(){
	var w_DATA;
	var intLoop;
	var c;
	var intHANKAKU_CNT;
	var intZENKAKU_CNT;
	var intBYTE_CNT;
	var c;

	intHANKAKU_CNT = 0;
	intZENKAKU_CNT = 0;

	w_DATA = frmMain.txtMOJIRETU.value;
	for (var intLoop = 0; intLoop < w_DATA.length; intLoop++) { 
		c = w_DATA.charCodeAt(intLoop); 
		// Shift_JIS: 0x0 ~ 0x80, 0xa0 , 0xa1 ~ 0xdf , 0xfd ~ 0xff 
		// Unicode : 0x0 ~ 0x80, 0xf8f0, 0xff61 ~ 0xff9f, 0xf8f1 ~ 0xf8f3 
		if ( (c >= 0x0 && c < 0x81) || (c == 0xf8f0) || (c >= 0xff61 && c < 0xffa0) || (c >= 0xf8f1 && c < 0xf8f4)) { 
			intHANKAKU_CNT++;
		} else { 
			intZENKAKU_CNT++;
		} 
	}
	intBYTE_CNT = intHANKAKU_CNT + (intZENKAKU_CNT * 2);
	document.getElementById("divRESULT").innerText = "半角:" + intHANKAKU_CNT + " , 全角:" + intZENKAKU_CNT + " , 全体バイト数:" + intBYTE_CNT;
}
//-->
</script>
<body>
<form name="frmMain">
<input type="text" size="100" name="txtMOJIRETU" /><br/>
<input type="button" name="btnRUN1" value="VBScript Check" onclick="fncVBS_Check" />
<input type="button" name="btnRUN2" value="JavaScript Check" onclick="fncJVS_Check()" />
<div id="divRESULT"></div>
</form>
</body>
</html>