Front End/Javascript
textarea 최대 입력 글자 수 제한 - maxLength, onKeyDown, byte
YJ_SW
2022. 1. 24. 16:29
728x90
maxLength
maxLength로 textarea에 입력할 수 있는 최대 문자수 명시
onKeyDown 함수 제어
onKeyDown을 이용해 입력되는 값의 길이가 maxLength를 넘을 때 string 자르기
string자르기 3가지 방법 - substring,substr,slice
const lengthCheck =(maxLength:number) => {
if(info.length>maxLength) {
setInfo(info.substr(0,maxLength))
}
}
...
<textarea cols={30} rows={3} placeholder="특이 사항을 입력해주세요 (선택/최대28자)"
maxLength={28}
onKeyDown={e=>lengthCheck(28)}
value={info?info:''}
onChange={e=>setInfo(e.target.value)}
></textarea>
onKeyDown 함수 제어 - Byte 계산
입력문자 | byte |
한글 한글자 | 2byte |
영어 알파벳 하나 | 1byte |
공백, 문장부호 | 1byte |
const lengthCheck =(maxByte:number) => {
let totalByte=0;
for(let i=0; i<info.length; i++){
const uni_char = escape(info.charAt(i)) //유니코드 형식으로 변환
if(uni_char.length>4){ // 한글 2byte
totalByte += 2;
}else{ // 영문,숫자,특수문자 : 1Byte
totalByte += 1;
}
}
if(totalByte > maxByte){
// 초과 알림
}
}
...
<textarea cols={30} rows={3} placeholder="특이 사항을 입력해주세요 (선택/최대28자)"
maxLength={28}
onKeyDown={e=>lengthCheck(28)}
value={info?info:''}
onChange={e=>setInfo(e.target.value)}
></textarea>
728x90