<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <script src="https://code.jquery.com/jquery-2.2.1.min.js"></script> </head> <body> <div class="checker_spell"> <textarea name="content" id="character_counter_content" cols="70" rows="22" class="checker_input" placeholder="내용을 입력해주세요."></textarea> </div> <div class="summary"> <p><span>공백 포함</span><strong class="letter" id="current_msglen">00</strong><span>자</span><strong class="byte" id="current_msg_byte">00</strong><span>byte</span></p> <p><span>공백 제외</span><strong class="letter" id="current_msglen_except_blank">00</strong><span>자</span><strong class="byte" id="current_msg_byte_except_blank">0</strong><span>byte</span></p> </div> <div class="wrap_btns"> <button type="button" class="btn_basic2 type03 btn_copy" id="copy_all">전체 복사</button> </div> <script> (function (window, $, undefined) { var $character_counter_content = $('#character_counter_content'), $st_len = $('#current_msglen'), $st_byte = $('#current_msg_byte'), $steb_len = $('#current_msglen_except_blank'), $steb_byte = $('#current_msg_byte_except_blank'); //복사 하기 $("#copy_all").on('click', function () { copyAll(); }); //실시간 글자수 세기 $character_counter_content.keyup(function () { chkMsgLength(this); }); function copyAll() { if ($character_counter_content.val() === '') { alert('내용을 입력 해주세요.'); return; } $character_counter_content.select(); document.execCommand('copy'); alert("입력하신 내용이 복사되었습니다.\n\nCtrl + v 키를 사용하여, 붙여 넣기를 사용하실 수 있습니다."); setTimeout(function () { try { if (document.selection) { document.selection.empty(); } else { window.getSelection().removeAllRanges(); } } catch (e) { } }, 1); } //텍스트 길이 계산 function chkMsgLength(objMsg) { //공백 포함 var vacuum_pattern = /\r\n/gm; var vacuum_text; var vacuum_length; //공백 미포함 var vacuum_remove_pattern = /\s/gm; var vacuum_remove_text; var vacuum_remove_length; vacuum_text = $(objMsg).val(); vacuum_length = lengthMsg($(objMsg).val()); vacuum_remove_length = lengthMsg(vacuum_text.replace(vacuum_remove_pattern, '')); vacuum_text = vacuum_text.replace(vacuum_pattern, '\n'); vacuum_remove_text = vacuum_text.replace(vacuum_remove_pattern, ''); $st_len.html(vacuum_text.length);//현재 글자수를 넣는다 $st_byte.html(vacuum_length);//현재 byte수를 넣는다 $steb_len.html(vacuum_remove_text.length);//현재 글자수를 넣는다 $steb_byte.html(vacuum_remove_length);//현재 byte수를 넣는다 } //텍스트 바이트단위 계산 function lengthMsg(obj_msg) { var nbytes = 0; var i; for (i = 0; i < obj_msg.length; i++) { var ch = obj_msg.charAt(i); if (encodeURIComponent(ch).length > 4) { // 한글일경우 nbytes += 2; } else if (ch === '\n') { // 줄바꿈일경우 if (obj_msg.charAt(i - 1) !== '\r') { // 하지만 밀려서 줄이 바뀐경우가 아닐때 nbytes += 1; } } else { //나머지는 모두 1byte nbytes += 1; } }//END FOR return nbytes; } })(window, jQuery, undefined); </script> </body> </html>
참고 사이트
www.saramin.co.kr/zf_user/tools/character-counter
글자수 세기/맞춤법 검사기 | 사람인
글자수 세기/맞춤법 검사기 | 이력서와 자기소개서의 글자수, 맟춤법을 확인 할 수 있는 검사기 - 사람인
www.saramin.co.kr
* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.