본문 바로가기

javascript/Example

[javascript] (exam) 자바스크립트를 이용한 SMS 80바이트 제한

밑의 escape() 함수를 이용하여 1byte와 2byte를 갖는 글자를 구분.
문자의 80byte를 제한하는 자바스크립트 소스.

  
<script type="text/javascript">
	function smsByteChk(content)
	{
		var temp_str = content.value;
 		var remain = document.getElementById("sms_remain");
 		
		remain.value = 80 - getByte(temp_str);
		//남은 바이트수를 표시 하기
		if(remain.value < 0)
		{
			alert(80 + "Bytes를 초과할 수 없습니다.");
			
			while(remain.value < 0)
			{
				temp_str = temp_str.substring(0, temp_str.length-1);
				content.value = temp_str;
				remain.value = 80 - getByte(temp_str);
			}
			
			content.focus();
		}

	}

	function getByte(str)
	{
		var resultSize = 0;
		if(str == null)
		{
			return 0;
		}
		
		for(var i=0; i<str.length; i++)
		{
			var c = escape(str.charAt(i));
			if(c.length == 1)//기본 아스키코드
			{
				resultSize ++;
			}
			else if(c.indexOf("%u") != -1)//한글 혹은 기타
			{
				resultSize += 2;
			}
			else
			{
				resultSize ++;
			}
		}
		
		return resultSize;
	} 
	
</script>

<form name="frm">
	<table>
		<tr>
			<td>
			<input type="text" name="sms_remain" style="width:15px; border:2px dotted #00f" 
			maxLength="2" value="80" readonly>Bytes 남음	
			</td>
		</tr>
		<tr>
			<td>	
			<textarea name="smscontent" rows="8" cols="16" 
			onkeyup="smsByteChk(this);" onkeydown="smsByteChk(this);"></textarea>								
			</td>
		</tr>	
	</table>
</form>


실행 화면

 

'javascript > Example' 카테고리의 다른 글

[javascript] JavaScript Date Format  (0) 2013.07.10
[javascript] (exam) 날짜 선택 제한 하기.  (4) 2011.10.07