String Byte

문자열 바이트 단위 길이 구하기

String.prototype.bytes = function() {
	var str = this;
	var l = 0;
	for (var i=0; i<str.length; i++) l += (str.charCodeAt(i) > 128) ? 2 : 1;
	return l;
}

문자열 바이트 단위 자르기

String.prototype.subStringByte = function(len) {
	var str = this;
	var l = 0;
	for (var i=0; i<str.length; i++) {
		l += (str.charCodeAt(i) > 128) ? 2 : 1;
		if (l > len) return str.substring(0,i);
	}
	return str;
}

TODO

$('#sendtxt').bind('keydown keyup', function () {
	var count = textLength();
	if (count > 80) {
		if ($.browser.msie) $(this).blur();
		$(this).val($(this).val().subStringByte(80 - $('#defaultmsg').text().bytes()));
		if ($.browser.msie) $(this).focus();
	}
	count = textLength();
	$('#msgcount').text(count);
	function textLength() {
		var defaultMsgText = $('#defaultmsg').text();
		var inputMsgText = $('#sendtxt').val();
		return defaultMsgText.bytes() + inputMsgText.bytes();
	}
});