textbox 글자 제한 maxlength 영문 한글 질문좀... > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

textbox 글자 제한 maxlength 영문 한글 질문좀... 정보

textbox 글자 제한 maxlength 영문 한글 질문좀...

본문

textbox에 글자제한을 maxlength 두었는데 한글과 영문 모두 1나의 길이로 보게 되서 byte로 계산하는 함수를 넣어봤습니다...
문제는 아래처럼 하니까 alert창이 뜨면서 7자 까지는 입력이 되서요...
어떤 해결 방법이 있을까요?
많은 조언 부탁드립니다....^ ^

################<소스>#####################

function chk(lim){ //바이트 제한 숫자를 매개변수로 받음
  f=document.regist; //폼객체
  v=f.nickname.value; //입력값
  re0=/[a-z]|[0-9]/gi; //영숫자 패턴
  re1=/[ㄱ-힣]/g; //한글패턴
  v0=v.match(re0); //매치확인
  v1=v.match(re1); //매치확인
  if(v0!=null)v0=v0.length; //바이트 구함
  if(v1!=null)v1=v1.length; //바이트 구함
  tot=v0+(v1*2); //합을 구함
  if(tot<=lim){ //한계수치이내인경우 바이트표시
  } else { //한계를 초과하면 경고문 출력
  alert('한글은 6자 영문은 12자까지 가능합니다.');
    v=f.nickname.value -1;
  f.nickname.select(); //입력값을 선택
  }
 }



인풋부분
<td bgcolor='#FFF9F7'><span class='txt_b'>회원 별명</span></td>
<td><input name='nickname' type='text' class='text02' size='20' maxlength=12 onKeyDown='nick_check_clear()'  onkeyup=chk(12)>

댓글 전체

글자가 입력되고 난 후 체크하게 되니 원하는 글자수보다 한자 많게 되죠
아래처럼 -1 해주면 원하는 답 아닌가요?

 if(tot >lim -1 ){ //한계수치이내인경우 바이트표시
  alert('한글은 6자 영문은 12자까지 가능합니다.');
    v=f.nickname.value -1;
  f.nickname.select(); //입력값을 선택
  }
감사합니다...^ ^
그렇게 했더니 6자에서 얼렛창이 뜹니다...
그런데 다른 문제가 생기네요...
만약 "대한민국대한" 이라는 글자를 입력하면...
"대한민국대ㅎ" 에서 경고창이 떠버리네요...
좋은 방법이 없을까요...ㅜ_ㅜ
만약 경고창이 뜨고 난후 12byte 이후를 잘라버는 방법은 없을까요?
이걸 사용해 보세요...

//최대길이
//input  object:객체 , iMax : 최대길이 
function calBytes(object,iMax)
{
  var iCount = 0;    // 길이
  var sVal = new String(object.value);    //값
  var iLen = sVal.length;    //현재 길이
   
  var oChar;
  for ( i=0; i<iLen; i++ )
  {
    oChar = sVal.charAt(i);
    if (escape(oChar).length > 4)
    {
      iCount += 2;
    } else{
      iCount += 1;
    }
  }
   
  if (iCount>iMax){    //최대 길이 비교
 
      alert("최대길이를 초과 하였습니다.!");
      object.value=sVal.substring(0,iLen-1)
 
      object.focus();
 
  }
 
}

사용 형식
:
<input type="text" class="text_wl"  name="txt_EmployeeNO" MAXLENGTH=10 tabindex=12 onkeydown="calBytes(this,10)" value="">
전체 28 |RSS
그누4 질문답변 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT