Q&A

댓글 2

  • 2023.04.10 15:43 #1756501

    입력하는 시점에 제한하려면?

    스킨에서 자바스크립트로 글자수를 세어서, 300자가 넘으면 경고를 띄우고 더이상 입력하지 못하도록 막으면 됩니다.

     

    출력하는 시점에 제한하려면?

    스킨에서 해당 확장변수 내용을 화면에 뿌려줄 때 처음 300자만 뿌려주고 나머지는 잘라버리면 됩니다.

     

    어느 쪽이든 스킨에서 해야 할 작업인 것 같네요.

  • 2023.04.11 02:49 #1756565

    게시글 작성시 입력시점에 제한을 하려면 다음을 참고해 보세요.(스케치북게시판 기준 write_form.html 파일)

    name값은 extra_vars1 이런식으로 정의됩니다. 1번째 확장변수 name값이 extra_vars1입니다. 두번째는 extra_vars2 입니다.

    info에 해당하는 textarea확장변수가 몇번째인지 확인해서 숫자 변경하시면 되겠습니다.

     

    이렇게 소스를 직접 추가할 경우 해당 게시판스킨을 사용하는 게시판에 일괄적용되기에 필요하다면 특정목적용 게시판스킨을 하나 복사해서 해당 스킨에만 소스를 적용하셔서 사용하시면 독립적으로 사용가능합니다.

     

     

    <script>
    jQuery(function($) {
      // textarea 요소 선택
      var textarea = $('textarea[name=extra_vars1]');

      // 최대 글자수 설정 (한글은 2바이트로 계산. 600/2=300글자)
      var maxlength = 600;

      // textarea 내용이 변경될 때마다 실행되는 함수
      textarea.on('input', function() {
    // textarea 내용
    var text = textarea.val();

    // 문자열의 길이 계산 (한글은 2바이트로 계산)
    var textLength = 0;
    for (var i = 0; i < text.length; i++) {
      if (escape(text.charAt(i)).length == 6) {
    textLength += 2;
      } else {
    textLength += 1;
      }
    }

    // 최대 글자수를 넘어서면
    if (textLength > maxlength) {
      // 초과된 글자를 제외하고 자르기
      var trimmedText = '';
      var count = 0;
      for (var i = 0; i < text.length; i++) {
    if (escape(text.charAt(i)).length == 6) {
      count += 2;
    } else {
      count += 1;
    }
    if (count <= maxlength) {
      trimmedText += text.charAt(i);
    } else {
      break;
    }
      }

      // textarea 내용을 최대 글자수까지 자르기
      textarea.val(trimmedText);

      // alert 창으로 알림 메시지 출력
      alert('글자수는 한글기준(띄어쓰기포함)' + (maxlength/2) + '자까지로 제한됩니다.');
    }
      });
    });
    </script>