안녕하세요.

 

기존엔 그냥 input 폼에 태그를 작성하였으나

Tagify 플러그인을 사용하였습니다.

 

http://www.nug.kr/index.php?mid=board&act=dispBoardWrite

해당 글쓰기 페이지에서 확인가능합니다.

 

기존에는 그냥 <input type="text" name="tags" id="tags" 만 있었다면

 

이제는 아래와 같이 출력되게 변경 되었습니다.

 

<tags class="tagify iText" tabindex="-1"><tag title="입력한태그" contenteditable="false" spellcheck="false" tabindex="-1" class="tagify__tag " value="입력한태그" draggable="true"><x title="" class="tagify__tag__removeBtn" role="button" aria-label="remove tag"></x><div><span class="tagify__tag-text">입력한태그</span></div></tag><span contenteditable="" tabindex="0" data-placeholder="태그" aria-placeholder="태그" class="tagify__input" role="textbox" aria-autocomplete="both" aria-multiline="false"></span></tags>

 

<input type="text" name="tags" id="tags" value="" class="iText" style="width:500px" placeholder="태그" title="Tag" tabindex="-1">

 

 

 

 

TAG 필수 작성 애드온 코드 입니다.

 

//작동시점
if($called_position == 'before_display_content' && Context::getResponseMethod() == 'HTML'){
    $this_act = Context::get('act');
    if($this_act != 'dispBoardWrite') return;
    debugPrint($logged_info->is_admin);
    $addon_info->admin = $addon_info->admin ? $addon_info->admin : 'N';
    if($addon_info->admin == 'Y' && $logged_info->is_admin == 'Y') return;
    $pattern = '/(name=[\"|\']tags[\"|\'])/i';
    $change_output = '${1} required';
    $output = preg_replace($pattern, $change_output, $output);
    //추가방지
    $script = '<script type="text/javascript">
        jQuery("form").submit(function(e){
            var ref = jQuery(this).find("[required]");
            jQuery(ref).each(function(){
                if (jQuery(this).val() == "" ){
                        alert("태그를 입력하세요.");
                        $(this).focus(); 
                        e.preventDefault(); 
                        return false;
                    }    
                });  
        return true; });
    </script>';
    Context::addHtmlFooter($script);

 

 

태그를 입력하지 않으면 아무 반응이 없고

태그를 입력하면 경고창과 함께 글이 써집니다.

 

태그가 있는경우

<tags class="tagify iText" required="" tabindex="-1">

태그가 없는경우

<tags class="tagify iText tagify--noTags tagify--empty" required="" tabindex="-1">

 

tags class 명으로 if 문을 만들면 태그를 필수로 입력할 수 있는 애드온 제작이 가능할것 같다는 생각이 듭니다.

 

 

    $pattern = '/(name=[\"|\']tags[\"|\'])/i'; 이 패턴 값이 핵심 기능을 하는 곳 같은데 값을 제가 아무리 변경해봐도 좋은 결과를 얻을 수가 없네요.

 

name을 class로 tags를 tagify iText tagify--noTags tagify--empty로도 바꿔보고 여러가지를 시도해 보았으나 작동하지 않습니다.

 

jQuery("form").submit(function(e){ 

이부분의 form 을 tags로 도 바꿔봤으나 결과는 마찬가지 입니다.

 

혹시 어떤 부분을 변경하면 좋을지 아시면 답변 부탁드립니다.

 

감사합니다.

  • profile
    확인해보니 required 가 삽입되어도 input 값이 0 픽셀이 되면서 작성해 달라는 글이 안보이는 증상이네요
  • profile

    span contenteditable required기능이 작동되면 경고창이 뜨게 수정이 필요해보입니다. 구글링 중에도 input 만 나오네요 ㅠㅠ

    끽해야 미입력시 테두리 빨간색으로 나오는기능인데 이는 전송 누르지 않은 상태에서도 빨간 테두리가 뜨네요.