티스토리 뷰
/* 댓글 입력 글자 수 체크 및 유효검사 */
$('.remaining').each(function () {
// count 정보 및 count 정보와 관련된 textarea/input 요소를 찾아내서 변수에 저장한다.
var $maxcount = $('.maxcount', this);
var $count = $('.count', this);
var $input = $(this).prev();
// .text()가 문자열을 반환하기에 이 문자를 숫자로 만들기 위해 1을 곱한다.
var maximumByte = $maxcount.text() * 1;
// update 함수는 keyup, paste, input 이벤트에서 호출한다.
var update = function (){
var before = $count.text() * 1;
var str_len = $input.val().length;
var cbyte = 0;
var li_len = 0;
for(i=0;i<str_len;i++){
var ls_one_char = $input.val().charAt(i);
if(escape(ls_one_char).length > 4){
cbyte +=2; //한글이면 2를 더한다
}else{
cbyte++; //한글아니면 1을 다한다
}
if(cbyte <= maximumByte){
li_len = i + 1;
}
}
// 사용자가 입력한 값이 제한 값을 초과하는지를 검사한다.
if (parseInt(cbyte) > parseInt(maximumByte)) {
gostart('허용된 글자수가 초과되었습니다.\r\n\n초과된 부분은 자동으로 삭제됩니다.');
var str = $input.val();
var str2 = $input.val().substr(0, li_len);
$input.val(str2);
var cbyte = 0;
for(i=0;i<$input.val().length;i++){
var ls_one_char = $input.val().charAt(i);
if(escape(ls_one_char).length > 4){
cbyte +=2; //한글이면 2를 더한다
}else{
cbyte++; //한글아니면 1을 다한다
}
}
}
$count.text(cbyte);
};
// input, keyup, paste 이벤트와 update 함수를 바인드한다
$input.bind('input keyup keydown paste change', function () {
setTimeout(update, 0)
});
update();
});
'JavaScript' 카테고리의 다른 글
메뉴 선택한 페이지 이동 시 에도 선택한 메뉴 하이라이트 적용하기. (0) | 2021.02.03 |
---|---|
lightslide 예제 (0) | 2019.08.20 |
Jquery 슬라이드 예제 01 (2) | 2019.08.20 |
Bootstrap Input 태그의 Clear 버튼 구현 (0) | 2019.06.03 |
textarea 저장 줄바꿈 없이 출력 표시 (0) | 2019.05.09 |