Q&A

CMS/프레임워크 Rhymix 2.1
개발 언어 PHP 7.4

예전에 같은 내용 문의 했을때 받은 조언대로 제목 대신 확장 변수 등에 저장하려고 합니다.

 

제목 입력칸에 250자를 넘게 입력하면, -> '확장변수에 그대로 저장 + 제목에는 250자까지만 저장' 이렇게 하려고 하는데

등록하는 순간 글자수 체크하는 로직이 엄청 빨리 작동을 하는지 이렇게 저렇게 해봐도,

등록을 누르는 순간 1~250자 이내로 입력하고 하네요.

 

AI한테 계속 시키다보면 결국 하긴 할텐데, 이런 경우 간단히 가능한 방법이 있는데 라이믹스를 잘 이해하지 못해서 엄청 멀리가는 경우가 있어서 일단 롤백하고 조언을 구해봅니다.

 

 

<div class="ppwrite_title use_ctg">
                <textarea rows="1" class="ppip autosize" name="title" id="subject" style="height: 89px;"></textarea>
                <!-- <textarea rows="1" class="ppip autosize" name="title" id="subject" placeholder="짧은 글은 여기에 (본문작성 하지마세요)" required></textarea> -->
                <div class="title_conter">
                    <span class="title_count">201</span> <span>/</span> <span>350</span>
                </div>
            </div>

 

 

스코스코 Lv. 5

댓글 3

  • 1. 게시글 제목은 DB 컬럼을 수정해서 250자를 1000자 등으로 변경할 수 있습니다.

    2. 하지만 이를 수정하고 싶지 않은 경우를 대비해 아래와 같이 우회 방법을 제안 드립니다.

     

    게시판 write_form.html 최 하단에 자바스크립트 코드를 삽입합니다.

    <script>

        function submit_check(e, window) {

            //게시판 스킨에 따라 제목 부분의 input id가 다를 수 있습니다.

            var titleInput = document.getElementById("title");

            var originalTitle = titleInput.value;

     

            // 250자를 초과하면

            if (originalTitle.length > 250) {

                // 전체 원본을 extra_vars1에 저장 (확장변수 name의 값을 잘 체크하시기 바랍니다.)

                var extraInput = document.querySelector('input[name="extra_vars1"]');

                if (extraInput) {

                    extraInput.value = originalTitle;

                }

     

                // 제목에는 250자까지 자른 값만 유지

                titleInput.value = originalTitle.substring(0, 250);

            }

        }

    </script>

     

    게시판의 submit버튼에 type은 submit. onclick에 submit_check();를 추가합니다.

    예) <button type="submit" onclick="return submit_check();" class="btn_insert">

     

    이제 제목에는 300자로 입력하면 250자 기준으로 잘리고, 확장변수에는 원래 제목이 입력됩니다.

  • 6시간 전 #1911866

    맙소사 이렇게 상세하게!! 오늘 시도해보고 후기남기겠습니다!

  • 5시간 전 #1911870

    폼 제출(submit) 시점에 처리하려고 하면 실행 순서에 따라 동작이 오락가락할 수 있습니다. 코어와 다른 자료들도 모두 submit 시점에 끼어들려고 하기 때문이지요. 웬만하면 폼 제출 시점이 아닌 입력 시점에 미리 처리해 두는 것을 추천드립니다.

     

    A 입력란의 내용 일부를 B 입력란으로 복사하는 것 뿐이라면, A 입력란에 onchange, oninput, onpaste 등의 이벤트를 걸어서 복사 작업을 하는 방법이 가장 안정적일 것입니다. 누가 뭐래도 A 입력란과 관련된 작업이니, A 입력란 단에서 처리하고 끝내야지요. 상위에 있는 폼에게 떠넘기려고 하면 안돼요.