태그 필수 작성 애드온 tag 입력방식 변경 했을때 태그 작성유무 체크 하는 방법
CMS/프레임워크 | Rhymix 2.0 |
---|---|
개발 언어 | PHP 7.2 |
안녕하세요.
기존엔 그냥 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로 도 바꿔봤으나 결과는 마찬가지 입니다.
혹시 어떤 부분을 변경하면 좋을지 아시면 답변 부탁드립니다.
감사합니다.

댓글 5
span contenteditable required기능이 작동되면 경고창이 뜨게 수정이 필요해보입니다. 구글링 중에도 input 만 나오네요 ㅠㅠ
끽해야 미입력시 테두리 빨간색으로 나오는기능인데 이는 전송 누르지 않은 상태에서도 빨간 테두리가 뜨네요.
태그 필수 입력 애드온을 사용해 보려고 하는데요. 죄송하지만 말씀 해 주신 증상( 태그를 입력하지 않고 저장을 누르면 아무런 증상이 없는 현상 ) 혹시 해결이 되신건가요?
답변감사합니다. ^^;;;