메인
기술
메인
기술
무료게임
잡담
자유
개인
일정
갤러리
회원가입
계정 찾기
로그인
HOME
기술
입력 글자바이트 제한 textarea,textbox용
목록
작성자
mins
작성 : 2006-12-19 17:52
조회 : 437
지남
1일간
2006-12-19
-
2006-12-19
좌표
첨부된 파일이 없습니다.
#javascript
<script> //================================================================ // 문자열 바이트 알아내기 //================================================================ function cm_get_byte(str) { //문자열의 byte 길이를 알아냄(한글 2byte로 처리) var i,m=str.length, re_count=0,val = 0;; for(i=0;i<m;i++) { val = escape(str.charAt(i)).length; if(val>3) re_count++; re_count++; } return re_count; } function cm_get_byte_length(str,limit_byte){ //지정된 바이트 길이만큼의 length를 반환, 홀수로 짤리면 -1의 길이반환 var i,m=str.length, re_count=0,val = 0;; var len_count = 0; for(i=0;re_count<limit_byte ;i++) { val = escape(str.charAt(i)).length; len_count++; if(val>3) re_count++; re_count++; } if(re_count%2 == 1) return (len_count-1); else return (len_count); } //================================================================ // 입력 글자바이트 제한 (필수 : 문자열 바이트 알아내기) // textarea에 사용 //================================================================ function input_textarea_limit_byte(ta,limit){ var layout = document.createElement('table'); // layout.border='2'; layout.style.padding='0px'; layout.style.margin='0px'; if(ta &&ta.style && ta.style.width){ layout.style.width=ta.style.width } layout.border="0"; layout.cellspacing="0"; layout.cellpadding="0"; var tr1 = layout.insertRow(-1); var td1 = tr1.insertCell(-1); td1.style.padding='0px'; td1.style.textAlign='right'; var tr2 = layout.insertRow(-1); var td2 = tr2.insertCell(-1); td2.style.padding='0px'; td2.style.textAlign='right'; var txt_limit = document.createElement('input'); txt_limit.type='text'; txt_limit.style.borderStyle='none'; txt_limit.style.textAlign='right'; txt_limit.style.fontSize='10px'; txt_limit.style.width='40px'; txt_limit.readOnly=true; txt_limit.value=0; var span_text1 = document.createElement('span'); span_text1.innerHTML='Limit : '; var span_text2 = document.createElement('span'); if(limit){ span_text2.innerHTML=' byte /'+limit+' byte'; }else{ span_text2.innerHTML=' byte '; } var div_title = document.createElement('div'); div_title.style.fontSize='10px'; div_title.appendChild(span_text1); div_title.appendChild(txt_limit); div_title.appendChild(span_text2); if(ta.tagName.toString().toLowerCase()=='textarea'){ //textarea일 경우만 if(!ta.rows){ta.rows="3";} var btn_0 = document.createElement('input'); btn_0.type='button'; btn_0.value='■'; btn_0.style.fontSize="10px"; btn_0.style.width="18px"; btn_0.style.height="18px"; btn_0.style.borderWidth="1px"; btn_0.onclick=function(){ this.blur(); ta.rows='3'; } var btn_p = btn_0.cloneNode(true); btn_p.value='▼'; btn_p.onclick=function(){ this.blur(); ta.rows=parseInt(ta.rows)+2; } div_title.appendChild(btn_0); div_title.appendChild(btn_p); } ta.parentNode.insertBefore(layout,ta); td1.appendChild(div_title); td2.appendChild(ta); ta.onkeyup=function(){ txt_limit.value= cm_get_byte(this.value) if(limit && txt_limit.value>limit){ alert('Max Byte = '+limit); this.value = this.value.toString().substr(0,cm_get_byte_length(this.value,limit)); txt_limit.value= cm_get_byte(this.value) } } //처음 처리 txt_limit.value= cm_get_byte(ta.value) if(limit && txt_limit.value>limit){ ta.value = ta.value.toString().substr(0,cm_get_byte_length(ta.value,limit)); } txt_limit.value= cm_get_byte(ta.value) } </script>
"공대여자는 이쁘다."를 나타내야 쓸 수 있습니다.
<script type="text/javascript">
input_textarea_limit_byte(document.getElementById('test_textarea1'),1000);
</script>
<script type="text/javascript">
input_textarea_limit_byte(document.getElementById('test_textarea2'),50);
</script>
"공대여자는 이쁘다."를 나타내야 쓸 수 있습니다.
<script type="text/javascript">
input_textarea_limit_byte(document.getElementById('test_textarea3'));
</script>
댓글
/
/
답변
수정
삭제
No Nickname
No Comment
새로운 댓글 작성
권한이 없습니다.
{{m_row.m_nick}}
내용이 너무 많습니다!
-
no-star
★☆☆☆☆
★★☆☆☆
★★★☆☆
★★★★☆
★★★★★
확인
게시물 : 1702 (114 page)
📅 달력형
📷 갤러리형
RSS
tag
제목
내용
제목+내용
제목+내용+코멘트
작성자
태그
검색
No
제목
작성자
날짜
조회
공지
[기본형] HTML (with 부트스트랩5.3 , jquery 3.7, vue.js)
#기본형
공대여자
24-02-06
02-06
49301
공지
유용한 리눅스(LINUX) 명령어
#linux
#command
공대여자
11-03-03
03-03
58047
공지
[공지] 기술 게시판
#etc
#공지
mins01
05-06-24
06-24
59354
1702
GA의 utm_medium 별 기본 채널 그룹
new
#ga
#medium
공대여자
25-08-19
08-19
15
1701
js-pointer-event-handler
1
#pointer
#event
공대여자
25-08-13
08-13
18
1700
reportError()
1
#report
#error
공대여자
25-08-07
08-07
32
1699
queueMicrotask()
2
#microtask
공대여자
25-08-07
08-07
23
1698
UI exclusive dialog
1
#modal
#dialog
공대여자
25-08-06
08-06
42
1697
마우스 등의 입력장치의 폴링레이트 이슈 PC/Mobile
#폴링레이트
#지연시간
#마우스
#팬
공대여자
25-08-01
08-01
56
1696
윈도우에서 포트포워딩 하기
#포트포워딩
공대여자
25-07-29
07-29
45
1695
git hub 소스에서 cors 회피하기
#github
공대여자
25-07-26
07-26
57
1694
웹 폰트 사용시 load, ready 시점 주의
#font
공대여자
25-07-15
07-15
77
1693
js-templater 단순한 JS 템플릿 엔진 만들봤는데...
1
#template
공대여자
25-07-04
07-04
86
1692
웹 페이지에서 선택된 문자열의 너비 알아오기
#text
#range
#width
공대여자
25-06-28
06-28
153
1691
HTML에서 자식요소를 격리 시키기 contain: strict;
2
#contain
#isolate
공대여자
25-06-27
06-27
143
1690
contenteditable="plaintext-only"
#contenteditable
공대여자
25-06-23
06-23
100
1689
openweathermap.org 날씨정보 API
2
#api
#날씨
공대여자
25-06-19
06-19
144
1688
css grid repeat 사용법. (동적 컬럼)
#grid
#auto-fit
#auto-fill
공대여자
25-06-01
06-01
211