열값의 길이가 길어서 한줄 이상 넘어가는 경우 보기 싫은 경우가 많다.
이 경우 특정 길이를 초과한 경우 자동으로 생략기호("...")와 마우스 오버시 도움말을 표시하도록 하면 매우 효과적일 것이다.
그러나, 단순히 열값의 길이를 @Length()와 같이 처리한다면, 1Byte문자와 2Byte(한글 등)가 모두 1Byte로 인식되어, 영문의 경우 매우 짧게 잘리는 경우가 발생할 수 있다.
위와 같이 영어/숫자/한글이 섞여있는 값에 대해서 지정한 길이 만큼 자르고 생략되는 경우 생갹기호(...)를 표시토록 하는 Javascript 함수를 아래에서 보자
//----------함수 정의-----------//
//문자열 자르기
function cutOffString(title, num){
var i, sum, title_one ;
var result = "" ;
var sumByte = 0 ;
if(lengthOfString(title) <= num){
document.write(title);
return ;
}
num -= 3;
for(i = 0; i < title.length; i++){
if( title.charCodeAt(i) >= 1000){ //영문 또는 숫자
sumByte += 2;
}else{
//2Byte문자
sumByte ++ ;
}
if(sumByte > num){
break ;
}else{
result += title.substr(i, 1) ;
}
}
document.write('
' + result + '...' + '') ;
return ;
}
function lengthOfString(title){
var i ;
var sumByte = 0 ;
for(i = 0; i < title.length; i++){
if( title.charCodeAt(i) < 1000){ //영문 또는 숫자
sumByte++;
}else{
//2Byte문자
sumByte += 2 ;
}
}
return sumByte ;
}
//-------------
함수호출(열수식)----------------//
<script language="javascript">cutOffString('" + bTitle + "', 68)</script>
Message was edited by: kr_admin