'모달띄우기'에 해당되는 글 2건

  1. 2018.05.28 자바스크립트로 팝업 여러개 띄우기(쿠키 넣기) 2
  2. 2018.02.07 Modal로 팝업 띄우기 6
2018. 5. 28. 18:40



팝업을 디비에서 불러와서 Modal에서 다 보여주고 싶은데, 그냥 창 띄우는거 말고, Modal로 작업하는법이다.


이건 좀 노가다 성이 있음...


밑에처럼 모달로 겹치게 뜨게 하고, 클릭해서 움직일수있게 만들고 싶다.


이 팝업의 순서는 

DB에서 원하는 값들을 가져와서 Loop를 돌면서 modal 를 생성해서, 숨겨놓고, 쿠키 값이 없으면 보여준다.


페이지 로드 => DB조회 값 가져옴 => 모달생성 => 쿠키 확인 => 쿠키에 없는거만 보여줌 


머, 이런식이다. 각 모달 id값을 게시판 번호로 붙여서 여러개 만들었다.

(이 방법을 추천하진 않는데.... 다른 방법은 복잡해서...그냥 이렇게 했다.)





먼저, 움직이게 하기 위해서는 jquery-ui.js 를 추가하고, draggable() 쓰면 된다.



jquery-ui 추가


1
2
3
4
5
6
7
8
9
 
<script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
 
<script>
    $(document).on('ready'function () {
    //모달 움직이게 하려면, draggable(); 하면 된다.
       $("#popup_no").draggable();
    });
</script>
cs



나같은 경우는 jstl로 디비에서 불러온 값을 넣어줄거다.

그래서 db에 있는 값들을 forEach써서, 모달로 다 만들어 준다.


style="display:none;" 이 있는데, 처음에 모달은 만들어 놓기는 하고, 안보이게 해놓았다. 


그리고, "오늘 더이상 열지 않기" 쿠키값이 없으면 보여주고, 있으면 안보여주게 만들었다.




모달 만들기


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<!--jstl로 값 불러와서 Loop돌려서 모달 만듬-->
  <c:forEach var="popup" items = "${list}" varStatus="status">
<!--여긴모달부분-->
     <div class ="popup" id ="popup_${popup.no}" style="display:none; position:absolute; top:${(status.count-1)*100+150}px; left:${(status.count-1)*150+100}px; width:470px; height:445px; border:1px solid #ccc; background-color:#ffffff; z-index:100">
          
          <div style="background-color:#DDDDDD; padding-bottom:10px; padding-top:10px; text-align:center;"><span><Strong>${popup.memoTitle}</Strong></span></div>
          <div style="overflow-y:scroll; padding:10px; width:469px; height:363px;"
        ${popup.memo}
          </div>
          <div style="cursor:pointer;background-color:#DDDDDD;text-align: center;padding-bottom: 10px;padding-top: 10px;">
              <span class="pop_bt_nomore" onClick="close_pop_allday(true, ${popup.no});">
                  오늘 더이상 열지 않기
              </span>
                |  
              <span class="close_popup" onClick="close_pop_allday(false, ${popup.no});" >
                   닫기
              </span>
          </div>
     </div> <!--End Modal-->
  </c:forEach>
cs


위에 모달은 맨 처음 사진처럼 만들어준다.


스타일에 보면, 

top:${(status.count-1)*100+150}px; left:${(status.count-1)*150+100}px;


위에처럼 써놓은게 있는데,


이건, status는 순서대로 가져오는 값의 인덱스 번호라고 생각하면 된다. 1,2,3,4, 이렇게 값이 있으므로,


애들 가지고, 계산해서, 처음 보이는 위치를 세팅해주었다.




그리고, "닫기", "오늘 더이상 열지 않기" 눌렀을 시에, 않보이게 하는거다.


그리고, "오늘 더이상 열지 않기" 클릭시에는 쿠키까지 생성해 놓는다.



자, 밑에 설명을 하자면,


close_pop_allday 라는 펑션을 만들었다.


그리고, 그냥 닫기 눌렀을때는 false 값을


오늘 그만보기 눌렀을때는 true 값을 받는다.


그리고, 받을때, popup_no 를 같이 받아서, 번호를 가지고 세팅한다.


setCookie 펑션은 퍼온거임.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<script>
 
      //Cookie Setting
        function setCookie(cookie_name, value, days) {
           var exdate = new Date();
           exdate.setDate(exdate.getDate() + days);
           // 설정 일수만큼 현재시간에 만료값으로 지정
           var cookie_value = escape(value) + ((days == null) ? '' : ';    expires=' + exdate.toUTCString());
           document.cookie = cookie_name + '=' + cookie_value;
         }
 
          //팝업 Close 기능
        function close_pop_allday(flag, popup_no) {
           _this = $(this);
           var popupString = "popup"+popup_no;
 
             if ( flag == true ) {
            //쿠키세팅(그냥닫기 오늘안보기)
                setCookie("popup"+popup_no,"end",1);
                $("#popup_"+popup_no).hide();
             }else{
        //false로 들어오면 그냥 숨기기만
                 $("#popup_"+popup_no).hide();
             }
        };
 
    $(document).on('ready'function () {
 
          //팝업 쿠키확인후 보여주기
          <c:if test="${null ne list}">
              <c:forEach var="popup" items = "${list}" varStatus="status">
                  var popup_no = ${popup.no};
                  if ($.cookie('popup'+popup_no)!="end"){
                      //쿠키없는거만 보여주기
                      $("#popup_"+popup_no).show();
                      $("#popup_"+popup_no).draggable();
                  }
              </c:forEach>
          </c:if>
 
    });
 
</script>
cs


예로, 게시물 번호가 11, 12 이다. 


그리고,  $(document).on('ready'function () 

 안에 넣어준다. document 안에 넣어주면 로드할때 항상 실행한다.

그리고, forEach로 돌면서, 쿠키명 popup11, popup12 쿠키가 있는지 확인하고, 

없으면, show 해서 보여주는거다.



 $("#popup_11").show();
 $("#popup_11").draggable();

$("#popup_12").show();
$("#popup_12").draggable();


그리고, draggable해서 움직이면서 뒤에꺼도 볼수있게 해주는거다.


생성된 태그를 보면 위에처럼 되어있을거다.


id값을 저렇게 남발하는게 안좋다고는 하는데, 모달로 여러개 띄우줄때는 이게 젤 간편한 방법인거 같다.







'컴퓨터 > JavaScript (jQuery)' 카테고리의 다른 글

값 입력할때마다 더하기  (0) 2018.08.07
Skel Css 사용하기  (0) 2018.07.04
jQuery에서 따옴표 처리하기  (0) 2018.05.24
정규식 패턴 종류  (0) 2018.04.27
사업자 등록번호 체크방법  (0) 2018.04.24
Posted by Tyson
2018. 2. 7. 16:40


모달로 긴급 공지를 띄우려고 한다.


뒷 배경은 검은색으로 입력 안되게 하고, 


닫기 눌렀을때, 창을 닫고 다른 작업 가능하게 하는 법이다.


많은 방법이 있는데, 초간단하게 띄우는 법으로 소개한다.


쿠키등은 나중에 포스팅하겠다.



밑에 사진처럼 띄우고 싶을때 하는법이다.





먼저 제이쿼리를 불러온다.


1
    <script src="https://code.jquery.com/jquery-latest.js"></script
cs



그 다음에, 모달 스타일을 만든다.

.modal 클래스는 전체를 반투명 검은색으로 만드는 거고, .modal-content가 글을 쓰는 곳이다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
    <style>
        /* The Modal (background) */
        .modal {
            display: none; /* Hidden by default */
            position: fixed; /* Stay in place */
            z-index: 1; /* Sit on top */
            left: 0;
            top: 0;
            width: 100%; /* Full width */
            height: 100%; /* Full height */
            overflow: auto; /* Enable scroll if needed */
            background-color: rgb(0,0,0); /* Fallback color */
            background-color: rgba(0,0,0,0.4); /* Black w/ opacity */
        }
    
        /* Modal Content/Box */
        .modal-content {
            background-color: #fefefe;
            margin: 15% auto; /* 15% from the top and centered */
            padding: 20px;
            border: 1px solid #888;
            width: 30%; /* Could be more or less, depending on screen size */                          
        }
 
</style>
cs



밑에 보면, Modal 클래스랑, modal-content클래스가 있다.

그냥 스타일 써서, 내용은 작성한다.

그리고, 닫기 버튼 누를때, onClick="close_pop();

close_pop펑션이 실행되게 해놓는다.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    <!-- The Modal -->
    <div id="myModal" class="modal">
 
      <!-- Modal content -->
      <div class="modal-content">
                <p style="text-align: center;"><span style="font-size: 14pt;"><b><span style="font-size: 24pt;">공지</span></b></span></p>
                <p style="text-align: center; line-height: 1.5;"><br />여기에 내용</p>
                <p><br /></p>
            <div style="cursor:pointer;background-color:#DDDDDD;text-align: center;padding-bottom: 10px;padding-top: 10px;" onClick="close_pop();">
                <span class="pop_bt" style="font-size: 13pt;" >
                     닫기
                </span>
            </div>
      </div>
 
    </div>
        <!--End Modal-->
cs



자, 이제 거의 다 끝났다.

자바스크립트가 접속하면, 자동으로 모달을 보이게 하자. 


.show()를 하면, 보인다.


그리고, 아까 위에서 '닫기' 버튼을 눌렀을때,


.hide()를 써서 숨기면 된다!


1
2
3
4
5
6
7
8
9
10
11
    <script type="text/javascript">
      
        jQuery(document).ready(function() {
                $('#myModal').show();
        });
        //팝업 Close 기능
        function close_pop(flag) {
             $('#myModal').hide();
        };
        
    </script>
cs




여기에 쿠키 넣어서, 오늘은 그만보기버튼추가하는 것도 있는데,


그건 다음 포스트에 올리겠다.




밑에는 전체 소스이다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
    <script src="https://code.jquery.com/jquery-latest.js"></script
 
    <style>
        /* The Modal (background) */
        .modal {
            display: none; /* Hidden by default */
            position: fixed; /* Stay in place */
            z-index: 1; /* Sit on top */
            left: 0;
            top: 0;
            width: 100%; /* Full width */
            height: 100%; /* Full height */
            overflow: auto; /* Enable scroll if needed */
            background-color: rgb(0,0,0); /* Fallback color */
            background-color: rgba(0,0,0,0.4); /* Black w/ opacity */
        }
    
        /* Modal Content/Box */
        .modal-content {
            background-color: #fefefe;
            margin: 15% auto; /* 15% from the top and centered */
            padding: 20px;
            border: 1px solid #888;
            width: 30%; /* Could be more or less, depending on screen size */                          
        }
 
</style>
 
 
 
    <!-- The Modal -->
    <div id="myModal" class="modal">
 
      <!-- Modal content -->
      <div class="modal-content">
                <p style="text-align: center;"><span style="font-size: 14pt;"><b><span style="font-size: 24pt;">공지</span></b></span></p>
                <p style="text-align: center; line-height: 1.5;"><br /></p>
                <p style="text-align: center; line-height: 1.5;"><span style="font-size: 14pt;">사이트 서버 점검으로</span></p>
                <p style="text-align: center; line-height: 1.5;"><b><span style="color: rgb(255, 0, 0); font-size: 14pt;">10:00 - 18:00 까지</span></b></p>
                <p style="text-align: center; line-height: 1.5;"><span style="font-size: 14pt;">사이트 사용이 중지 됩니다.</span></p>
                <p style="text-align: center; line-height: 1.5;"><span style="font-size: 14pt;"><br /></span></p>
                <p style="text-align: center; line-height: 1.5;"><span style="font-size: 14pt;">이용에 불편을 드린 점 양해를 </span></p>
                <p style="text-align: center; line-height: 1.5;"><span style="font-size: 14pt;">부탁드립니다.</span></p>
                <p style="text-align: center; line-height: 1.5;"><br /></p>
                <p><br /></p>
            <div style="cursor:pointer;background-color:#DDDDDD;text-align: center;padding-bottom: 10px;padding-top: 10px;" onClick="close_pop();">
                <span class="pop_bt" style="font-size: 13pt;" >
                     닫기
                </span>
            </div>
      </div>
 
    </div>
        <!--End Modal-->
 
 
    <script type="text/javascript">
      
        jQuery(document).ready(function() {
                $('#myModal').show();
        });
        //팝업 Close 기능
        function close_pop(flag) {
             $('#myModal').hide();
        };
        
 </script>
 

cs




참고 사이트 :http://new93helloworld.tistory.com/135

'컴퓨터 > JavaScript (jQuery)' 카테고리의 다른 글

jQuery에서 따옴표 처리하기  (0) 2018.05.24
정규식 패턴 종류  (0) 2018.04.27
사업자 등록번호 체크방법  (0) 2018.04.24
엔터 칠때 자동으로 클릭하기  (0) 2018.01.05
jQuery 동적 이벤트 on  (0) 2015.10.22
Posted by Tyson