자바 키입력 이벤트 관련 문의드립니다.
본문

태그게시판 관련 자바 문의드립니다.
 $("#tagIpt").on("keyup", function(event) {
            $(".tagListIpt ul li span").removeClass('overlap');
            if(event.keyCode == 32){
                $(this).val($(this).val().replace(/ /gi, ""));
                inputTag($(this).val());
            }
        });
자바에 ㅈ 자도 모르는 초보입니다. 현재 스페이스바를 누르면 이벤트(한개의 태그입력완료)가 발생하게 되어있습니다.
저는 여기 그누보드 Q&A 게시판처럼 마우스로 다른 영역을 클릭했을때도 이벤트가 발생하기를 원하는데 초보만이 가능한 무한한 상상의 나래를 펴도 도저히 엄두가 안나네요. 일단 스페이스바를 엔터로 바꾸면 될까 싶어서 저 32를 13으로 변경해서 해봤는데 이벤트 발생보다 먼저 글이 등록되는 거 같습니다.
사용하고자 하는 게시판은
jun31019님의
https://sir.kr/g5_skin/27608 태그게시판입니다.
많이 까다로운 부분이라면 대충 어떤식으로 하라고 알려주시면
구글링 과 상상력을 동원해서 도전해보겠습니다.
아래는 전체 소스입니다. 감사합니다.
<script>
    
    $(window).ready(function(){
        
        $(document).on('click','.tag > i',function(){
            $(this).parent().remove();
        });
        
        $(".ppTag").click(function(){
            inputTag($(this).data('word'));
            return false;
        });
        $("#tagIpt").on("keyup", function(event) {
            $(".tagListIpt ul li span").removeClass('overlap');
            if(event.keyCode == 32){
                $(this).val($(this).val().replace(/ /gi, ""));
                inputTag($(this).val());
            }
        });
});
    function inputTagList(){
        var linCnt = $(".tagListIpt ul li.tag").length;
        var tag = '';
        for(var i=0; i<linCnt; i++){
            var j = i+1;
            if(!tag){
                tag = $(".tagListIpt ul li:nth-child("+j+") span").html();
            }else{
                tag += ','+$(".tagListIpt ul li:nth-child("+j+") span").html();
            }
        }
        tag = tag.replace(" ", "");
        console.log('after replace : '+tag);
        $("#wr_2").val(tag);
    }
    function chkOverlap(a){
        var linCnt = $(".tagListIpt ul li.tag").length;
        var overlap = false;
        for(var i=0; i<linCnt; i++){
            var j = i+1;
            if(a == $(".tagListIpt ul li:nth-child("+j+") span").html()){
                $(".tagListIpt ul li:nth-child("+j+") span").addClass('overlap');
                overlap = true;
            }
        }
        return overlap;
    }
    function inputTag(a){
        
        a = a.replace(/ /g, '');
        
        var linCnt = $(".tagListIpt ul li.tag").length;
        
        if(chkOverlap(a) == false){
            if(linCnt < 10){
                var taghtml_ = '';
                
                taghtml_ += '<li class="tag">#<span>';
                taghtml_ += a;
                taghtml_ += '</span><i class="fa fa-times" aria-hidden="true"></i></li>';    
                
                $(".tabTxt").before(taghtml_);
            }else{
                alert('태그틑 최대 10개까지 입력가능합니다.');    
            }
            
            $("#tagIpt").val('');
        }
    }    
</script>
    
답변 3
keyup 이벤트 말고 focusout 이나 blur 이벤트 사용하셔야 됩니다.
$(document).click(function(e){
    if (!$(e.target).is('#tagIpt')) {alert('문서 클릭 했네요');  }
});
-----------------------------------
용어부터 분명히 하세요
자바에 ㅈ 자도 모르는 초보입니다<--- java와 javascript는 완전히 다릅니다
javascript와 php가 완전히 다르듯이 Java또한 php 처럼 완전히 다른 언어입니다
자바라고 해놓아도 코드를 보면 알지만 자바스크립트를 자바라 부르는 것은 영구없~~~다
정말 감사합니다. 말씀하신대로 공부해보고 해결되면 글 남기겠습니다.
엔터랑 스페이스 같이 적용하는건
if(event.keyCode == 13 || event.keyCode == 32)
이렇게 하고 입력폼을 input 에서 textarea 로 변경하니 되더군요. 구문이 맞는지는 모르겠지만
작동은 되서 문제가 없지 않나 싶습니다.;;;