채택완료

댓글쓰기에 벨류값 출력이 안됩니다. 도와주세요!

2020-03-02 (월) 13:15:17 2,736

댓글 작성시 지정해놓은 문구를 자동으로 출력하기위해

view_comment_skin.php 파일 내부에서

아래처럼 <textarea></textarea> 사이에 소스를 넣었는데 소스가 출력이 안됩니다.

Copy
<textarea id="wr_content" name="wr_content" required title="댓글 내용"

        <?php if ($comment_min || $comment_max) { ?>onkeyup="check_byte('wr_content', 'char_count');"<?php } ?> placeholder="댓글내용을 입력해주세요"><?php echo $c_wr_content; ?>소스입니다.</textarea>

id="wr_content" 이 부분을 지우면 출력은 됩니다만 댓글등록 누르니까

"올바른 방법으로 이용해 주십시오" 라는 문구가 뜨고 댓글 등록이 안됩니다.

어디를 어떻게 수정해줘야 정상출력 및 댓글등록이 가능할까요?

3일째 혼자 이것저것 해보고있는데 잘 안되네요..

고수분들의 도움을 요청합니다.

전체코드 같이 올립니다.

Copy
<?php

if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가

?>

 

<script>

// 글자수 제한

var char_min = parseInt(<?php echo $comment_min ?>); // 최소

var char_max = parseInt(<?php echo $comment_max ?>); // 최대

</script>

 

<!-- 댓글 리스트 -->

<section id="bo_vc">

    <h2 class="bo_vc_tit">댓글목록 <span><?php echo $view['wr_comment']; ?></span></h2>

    <?php

    for ($i=0; $i<count($list); $i++) {

        $arr = get_level_icon($list[$i]['mb_id']);

        $comment_id = $list[$i]['wr_id'];

        $cmt_depth = ""; // 댓글단계

        $cmt_depth = strlen($list[$i]['wr_comment_reply']) * 15;

        $str = $list[$i]['content'];

        // if (strstr($list[$i]['wr_option'], "secret"))

            // $str = $str;

        $str = preg_replace("/\[\<a\s.*href\=\"(http|https|ftp|mms)\:\/\/([^[:space:]]+)\.(mp3|wma|wmv|asf|asx|mpg|mpeg)\".*\<\/a\>\]/i", "<script>doc_write(obj_movie('$1://$2.$3'));</script>", $str);

    ?>

    <article id="c_<?php echo $comment_id ?>" <?php if ($cmt_depth) { ?>style="margin-left:<?php echo $cmt_depth ?>px;border-bottom-color:#f8f8f8"<?php } ?>>

        <div class="comment_inner">

            <header>

                <h2><?php echo get_text($list[$i]['wr_name']); ?>님의 댓글<?php if ($cmt_depth) { ?><span class="sound_only">의 댓글</span><?php } ?></h2>

                <?php echo $list[$i]['name'] ?>

                <?php if ($is_ip_view) { ?>

                <span class="sound_only">아이피</span>

                <span class="bo_vc_hdinfo">(<?php echo $list[$i]['ip']; ?>)</span>

                <?php } ?>

                <span class="sound_only">작성일</span>

                <span class="bo_vc_hdinfo"><i class="fa fa-clock-o" aria-hidden="true"></i> <time datetime="<?php echo date('Y-m-d\TH:i:s+09:00', strtotime($list[$i]['datetime'])) ?>"><?php echo $list[$i]['datetime'] ?></time></span>

                <?php

                include(G5_SNS_PATH."/view_comment_list.sns.skin.php");

                ?>

                <div class="bo_vl_opt">

                    <button type="button" class="btn_cm_opt btn_b03 btn"><i class="fa fa-ellipsis-v" aria-hidden="true"></i><span class="sound_only">댓글 옵션</span></button>

                    <ul class="bo_vc_act">

                        <?php if ($list[$i]['is_reply']) { ?><li><a href="<?php echo $c_reply_href; ?>" onclick="comment_box('<?php echo $comment_id ?>', 'c'); return false;">답변</a></li><?php } ?>

                        <?php if ($list[$i]['is_edit']) { ?><li><a href="<?php echo $c_edit_href; ?>" onclick="comment_box('<?php echo $comment_id ?>', 'cu'); return false;">수정</a></li><?php } ?>

                        <?php if ($list[$i]['is_del']) { ?><li><a href="<?php echo $list[$i]['del_link']; ?>" onclick="return comment_delete();">삭제</a></li><?php } ?>

                    </ul>

                </div>

                <script>

                $(function() {              

                    // 댓글 옵션창 열기

                    $(".btn_cm_opt").on("click", function(){

                        $(this).parent("div").children(".bo_vc_act").show();

                    });

                            

                    // 댓글 옵션창 닫기

                    $(document).mouseup(function (e){

                        var container = $(".bo_vc_act");

                        if( container.has(e.target).length === 0)

                        container.hide();

                    });

                });

                </script>

            </header>

            <div class="cmt_contents">

                <!-- 댓글 출력 -->

                <p>

                    <?php if (strstr($list[$i]['wr_option'], "secret")) echo "<img src=\"".$board_skin_url."/img/icon_secret.gif\" alt=\"비밀글\">"; ?>

                    <?php echo $str ?>

                </p>

 

                <?php if($list[$i]['is_reply'] || $list[$i]['is_edit'] || $list[$i]['is_del']) {

                    $query_string = clean_query_string($_SERVER['QUERY_STRING']);

 

                    if($w == 'cu') {

                        $sql = " select wr_id, wr_content, mb_id from $write_table where wr_id = '$c_id' and wr_is_comment = '1' ";

                        $cmt = sql_fetch($sql);

                        if (!($is_admin || ($member['mb_id'] == $cmt['mb_id'] && $cmt['mb_id'])))

                            $cmt['wr_content'] = '';

                        $c_wr_content = $cmt['wr_content'];

                    }

 

                    $c_reply_href = './board.php?'.$query_string.'&amp;c_id='.$comment_id.'&amp;w=c#bo_vc_w';

                    $c_edit_href = './board.php?'.$query_string.'&amp;c_id='.$comment_id.'&amp;w=cu#bo_vc_w';

                ?>

                <?php } ?>

            </div>

                <span id="edit_<?php echo $comment_id ?>"></span><!-- 수정 -->

                <span id="reply_<?php echo $comment_id ?>"></span><!-- 답변 -->

            <input type="hidden" id="secret_comment_<?php echo $comment_id ?>" value="<?php echo strstr($list[$i]['wr_option'],"secret") ?>">

            <textarea id="save_comment_<?php echo $comment_id ?>" style="display:none"><?php echo get_text($list[$i]['content1'], 0) ?></textarea>

        </div>

    </article>

    <?php } ?>

    <?php if ($i == 0) { //댓글이 없다면 ?><p id="bo_vc_empty">등록된 댓글이 없습니다.</p><?php } ?>

 

</section>

 

<?php if ($is_comment_write) {

        if($w == '')

            $w = 'c';

    ?>

    <aside id="bo_vc_w">

        <h2>댓글쓰기</h2>

        <form name="fviewcomment" id="fviewcomment" action="<?php echo $comment_action_url; ?>" onsubmit="return fviewcomment_submit(this);" method="post" autocomplete="off" class="bo_vc_w">

        <input type="hidden" name="w" value="<?php echo $w ?>" id="w">

        <input type="hidden" name="bo_table" value="<?php echo $bo_table ?>">

        <input type="hidden" name="wr_id" value="<?php echo $wr_id ?>">

        <input type="hidden" name="comment_id" value="<?php echo $c_id ?>" id="comment_id">

        <input type="hidden" name="sca" value="<?php echo $sca ?>">

        <input type="hidden" name="sfl" value="<?php echo $sfl ?>">

        <input type="hidden" name="stx" value="<?php echo $stx ?>">

        <input type="hidden" name="spt" value="<?php echo $spt ?>">

        <input type="hidden" name="page" value="<?php echo $page ?>">

        <input type="hidden" name="is_good" value="">

 

        <?php if ($comment_min || $comment_max) { ?><strong id="char_cnt"><span id="char_count"></span>글자</strong><?php } ?>

        <textarea name="wr_content" required title="댓글 내용"

        <?php if ($comment_min || $comment_max) { ?>onkeyup="check_byte('wr_content', 'char_count');"<?php } ?> placeholder="댓글내용을 입력해주세요"><?php echo $c_wr_content; ?>소스입니다.</textarea>

        <?php if ($comment_min || $comment_max) { ?><script> check_byte('wr_content', 'char_count'); </script><?php } ?>

                

        <div class="bo_vc_w_wr">

            <div class="bo_vc_w_info">

                <?php if ($is_guest) { ?>

                <label for="wr_name" class="sound_only">이름<strong> 필수</strong></label>

                <input type="text" name="wr_name" value="<?php echo get_cookie("ck_sns_name"); ?>" id="wr_name" required class="frm_input required" size="25" placeholder="이름">

                <label for="wr_password" class="sound_only">비밀번호<strong> 필수</strong></label>

                <input type="password" name="wr_password" id="wr_password" required class="frm_input required" size="25"  placeholder="비밀번호">

                <?php

                }

                ?>

                <?php if ($is_guest) { ?>

                    <?php echo $captcha_html; ?>

                <?php } ?>

                <?php

                if($board['bo_use_sns'] && ($config['cf_facebook_appid'] || $config['cf_twitter_key'])) {

                ?>

                <span class="sound_only">SNS 동시등록</span>

                <span id="bo_vc_send_sns"></span>

                <?php } ?>

 

                <span class="bo_vc_secret chk_box">

                    <input type="checkbox" name="wr_secret" value="secret" id="wr_secret" class="selec_chk">

                    <label for="wr_secret" class="icon_lock">

                        <span></span>비밀글

                    </label>

                </span>

            </div>

            <?php 

                $reply = array(

                    '닉네임1',

                    '닉네임2',

                    '닉네임3',

                ); 

                $randint = mt_rand(0, count($reply)-1);

                $wr_1 = $reply[$randint]; 

            ?>

            <?php if ($is_admin) { ?>

            <div>

                닉네임 변경 : <input type="text" name="wr_1" id="wr_1" value="<?php echo $wr_1; ?>" class="frm_input" size="20" placeholder="작성자 이름변경">

            </div>

            <?php } ?>

            <div class="btn_confirm">

                <button type="submit" id="btn_submit" class="btn_submit">댓글등록</button>

            </div>

 

        </div>

        </form>

    </aside>

 

    <script>

    var save_before = '';

    var save_html = document.getElementById('bo_vc_w').innerHTML;

 

    function good_and_write()

    {

        var f = document.fviewcomment;

        if (fviewcomment_submit(f)) {

            f.is_good.value = 1;

            f.submit();

        } else {

            f.is_good.value = 0;

        }

    }

 

    function fviewcomment_submit(f)

    {

        var pattern = /(^\s*)|(\s*$)/g; // \s 공백 문자

 

        f.is_good.value = 0;

 

        /*

        var s;

        if (s = word_filter_check(document.getElementById('wr_content').value))

        {

            alert("내용에 금지단어('"+s+"')가 포함되어있습니다");

            document.getElementById('wr_content').focus();

            return false;

        }

        */

 

        var subject = "";

        var content = "";

        $.ajax({

            url: g5_bbs_url+"/ajax.filter.php",

            type: "POST",

            data: {

                "subject": "",

                "content": f.wr_content.value

            },

            dataType: "json",

            async: false,

            cache: false,

            success: function(data, textStatus) {

                subject = data.subject;

                content = data.content;

            }

        });

 

        if (content) {

            alert("내용에 금지단어('"+content+"')가 포함되어있습니다");

            f.wr_content.focus();

            return false;

        }

 

        // 양쪽 공백 없애기

        var pattern = /(^\s*)|(\s*$)/g; // \s 공백 문자

        document.getElementById('wr_content').value = document.getElementById('wr_content').value.replace(pattern, "");

        if (char_min > 0 || char_max > 0)

        {

            check_byte('wr_content', 'char_count');

            var cnt = parseInt(document.getElementById('char_count').innerHTML);

            if (char_min > 0 && char_min > cnt)

            {

                alert("댓글은 "+char_min+"글자 이상 쓰셔야 합니다.");

                return false;

            } else if (char_max > 0 && char_max < cnt)

            {

                alert("댓글은 "+char_max+"글자 이하로 쓰셔야 합니다.");

                return false;

            }

        }

        else if (!document.getElementById('wr_content').value)

        {

            alert("댓글을 입력하여 주십시오.");

            return false;

        }

 

        if (typeof(f.wr_name) != 'undefined')

        {

            f.wr_name.value = f.wr_name.value.replace(pattern, "");

            if (f.wr_name.value == '')

            {

                alert('이름이 입력되지 않았습니다.');

                f.wr_name.focus();

                return false;

            }

        }

 

        if (typeof(f.wr_password) != 'undefined')

        {

            f.wr_password.value = f.wr_password.value.replace(pattern, "");

            if (f.wr_password.value == '')

            {

                alert('비밀번호가 입력되지 않았습니다.');

                f.wr_password.focus();

                return false;

            }

        }

 

        <?php if($is_guest) echo chk_captcha_js(); ?>

 

        set_comment_token(f);

 

        document.getElementById("btn_submit").disabled = "disabled";

 

        return true;

    }

 

    function comment_box(comment_id, work)

    {

        var el_id,

        form_el = 'fviewcomment',

        respond = document.getElementById(form_el);

 

        // 댓글 아이디가 넘어오면 답변, 수정

        if (comment_id)

        {

            if (work == 'c')

                el_id = 'reply_' + comment_id;

            else

                el_id = 'edit_' + comment_id;

        }

        else

            el_id = 'bo_vc_w';

 

        if (save_before != el_id)

        {

            if (save_before)

            {

                document.getElementById(save_before).style.display = 'none';

            }

 

            document.getElementById(el_id).style.display = '';

            document.getElementById(el_id).appendChild(respond);

            //입력값 초기화

            document.getElementById('wr_content').value = '';

 

            /*댓글 수정

            if (work == 'cu')

            {

                document.getElementById('wr_content').value = document.getElementById('save_comment_' + comment_id).value;

                if (typeof char_count != 'undefined')

                    check_byte('wr_content', 'char_count');

                if (document.getElementById('secret_comment_'+comment_id).value)

                    document.getElementById('wr_secret').checked = true;

                else

                    document.getElementById('wr_secret').checked = false;

            }

            */

 

            // 댓글 수정

            if (work == 'cu')

            {

                document.getElementById('wr_content').value = document.getElementById('save_comment_' + comment_id).value;

                <?php if ($is_admin) { ?>document.getElementById('wr_1').value = document.getElementById('save_comment_wr1_' + comment_id).value;<?php } ?>

                if (typeof char_count != 'undefined')

                    check_byte('wr_content', 'char_count');

                if (document.getElementById('secret_comment_'+comment_id).value)

                    document.getElementById('wr_secret').checked = true;

                else

                    document.getElementById('wr_secret').checked = false;

            }


 

            document.getElementById('comment_id').value = comment_id;

            document.getElementById('w').value = work;

 

            if(save_before)

                $("#captcha_reload").trigger("click");

 

            save_before = el_id;

        }

    }

 

    function comment_delete()

    {

        return confirm("이 댓글을 삭제하시겠습니까?");

    }

 

    comment_box('', 'c'); // 댓글 입력폼이 보이도록 처리하기위해서 추가 (root님)

 

    <?php if($board['bo_use_sns'] && ($config['cf_facebook_appid'] || $config['cf_twitter_key'])) { ?>

    $(function() {

    // sns 등록

        $("#bo_vc_send_sns").load(

            "<?php echo G5_SNS_URL; ?>/view_comment_write.sns.skin.php?bo_table=<?php echo $bo_table; ?>",

            function() {

                save_html = document.getElementById('bo_vc_w').innerHTML;

            }

        );


 

           

    });

    <?php } ?>

 

    $(function() {            

        //댓글열기

        $(".cmt_btn").click(function(){

            $(this).toggleClass("cmt_btn_op");

            $("#bo_vc").toggle();

        });

    });

    </script>

    <?php } ?>

답변 6개 / 댓글 6개

채택된 답변
+20 포인트
2020-03-02 (월) 15:48:17

value 설정은 잊어주세요 input속성이랑 잠시 헷갈린것 같습니다.

id="wr_content" 을 변경하면 정상작동하는걸로봐서는 어딘가에서 개입이 있는것 같은데 디버깅이 쉽지 않네요 ㄷㄷ

Copy
<?php if (! $c_wr_content) $c_wr_content = '사용할문구'; ?>

    <textarea id="wr_content" name="wr_content" maxlength="10000" required class="required" title="내용" placeholder="댓글내용을 입력해주세요" 

    <?php if ($comment_min || $comment_max) { ?>onkeyup="check_byte('wr_content', 'char_count');"<?php } ?>><?php echo $c_wr_content; ?></textarea>

 

// 여기 아님... 전송시 난독증인가...

// 양쪽 공백 없애기

    var pattern = /(^\s*)|(\s*$)/g; // \s 공백 문자

document.getElementById('wr_content').value = document.getElementById('wr_content').value.replace(pattern, "");
2020-03-02 (월) 17:24:42

역시 자바스크립트 개입이 있었네요...

comment_box('', 'c'); // 댓글 입력폼이 보이도록 처리하기위해서 추가 (root님)

함수 내용중

        //입력값 초기화

        document.getElementById('wr_content').value = '';

이부분이 문제였네요.

일단 주석 처리하면 작동은 하는데 내용이 초기화 안되는건 서버단에서 권한설정을 해주시는게 좋을것 같습니다.

답변에 대한 댓글 2개

애니타임님 답변 감사합니다
한 번 확인해보고 결과 올리겠습니다^^
애니타임님 덕분에 원하는 기능 구현했습니다.^^
너무 감사드립니다.
2020-03-02 (월) 15:06:19

placeholder 값이 있으면 포커스가 오지 않으면 먼저 출력됩니다.

답변에 대한 댓글 1개

placeholder 값을 빼고 value="사용할문구" 이것만 넣은 상태입니다만
아무 문구도 안뜨고 백지상태네요...
<textarea>사용할문구</textarea> 이렇게만 넣으면 출력은 되는데 댓글 등록이 안되고... 답답하네요^^;
2020-03-02 (월) 14:49:56
Copy
<textarea id="wr_content" name="wr_content" required title="댓글 내용"
        <?php if ($comment_min || $comment_max) { ?>onkeyup="check_byte('wr_content', 'char_count');"<?php } ?> placeholder="댓글내용을 입력해주세요" value="사용할문구"><?php echo $c_wr_content; ?></textarea>

답변에 대한 댓글 1개

애니타임님께서 올려주신 코드 그대로 카피해서 넣었습니다만
벨류값이 안뜨네요
placeholder 값만 뜹니다..ㅜㅜ
2020-03-02 (월) 14:40:37

<textarea> 속성에 기본적으로 입력되게 할려면 value="사용할문구"

답변에 대한 댓글 1개

[code]
<textarea id="wr_content" name="wr_content" required title="댓글 내용"
<?php if ($comment_min || $comment_max) { ?>onkeyup="check_byte('wr_content', 'char_count');"<?php } ?> placeholder="댓글내용을 입력해주세요"><?php echo $c_wr_content; ?>value="사용할문구"</textarea>
[/code]
이렇게 넣어봐도 댓글내용을 입력해주세요 이 문구만 뜹니다만
제가 잘못넣었는지요?
2020-03-02 (월) 13:51:40

정확한 의도를 알수없지만 유추해서 답변드립니다.

1846114264_1583124345.6333.png

1. 댓글위 파란색 영역

011행 <!-- 댓글 리스트 --> 이전이나 다음에 적당한 내용입력

2. 댓글리스트가 보이는 노란색영역

013     <h2 class="bo_vc_tit">댓글목록 <span><?php echo $view['wr_comment']; ?></span></h2>

다음에 적당한 내용 입력

3. 댓글 내용입력폼 녹색영역

placeholder="댓글내용을 입력해주세요" << 적당한 문구로 수정해주세요

답변에 대한 댓글 1개

애니타임님 답변 감사합니다^^
제 설명이 많이 부족했나보네요..ㅎㅎ
말씀하신 3. 녹색영역에 placeholder="댓글내용을 입력해주세요" 가 아닌
타이핑 안해도되게 지정문구가 뜨고 바로 댓글등록 버튼을 누르면 댓글이 등록되게끔 하려합니다.
placeholder="댓글내용을 입력해주세요" 이 부분은 수정을 해도 댓글입력란을 누르면
사라지는 문구라서 제가 구현하려는건 저부분 수정은 아닌것같습니다..^^;

답변을 작성하려면 로그인이 필요합니다.