테스트 사이트 - 개발 중인 베타 버전입니다

장바구니 선택시 Sweetalert사용하는데 창이 꺼집니다. 채택완료

JJpamiz 4년 전 조회 2,587

안녕하세요.

 

비전공자인데 어찌다보니 쇼핑몰을 수정하고있습니다.

 

현재 영카트5를 사용중이며

 

쇼핑몰 상세 페이지에서 장바구니를 클릭했을대 뜨는 alert창을

 

sweetalert를 사용중인데 이게 일반 소스에서는 잘사용됩니다만

 

item.form.skin.php내에

 

fitem_submit(f)함수 안에서는 창이 떳다가 바로 사라져버리고 아무것도 할수가 없습니다.

 

가장 기본적인 창을 뛰워도 무조건 창이 떳다가 사라져버럽니다. 

 

어떻게 해결해야할까요? 이걸로 인한 소스수주정은 아래 설명드리는 부분이 전부이빈다.

 

아래에 

add_javascript(''," target="_blank" rel="noopener noreferrer">https://unpkg.com/sweetalert/dist/sweetalert.min.js">', 10);

 

추가하고

function fitem_submit(f) 함수안에  swal 함수 추가했습니다.

 

</p>

<p> </p>

<p><?php

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

<p>// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨

add_stylesheet('<link rel="stylesheet" href="'.G5_SHOP_CSS_URL.'/style.css">', 0);

add_javascript('<script src="<a href="https://unpkg.com/sweetalert/dist/sweetalert.min.js"></script>'," target="_blank" rel="noopener noreferrer">https://unpkg.com/sweetalert/dist/sweetalert.min.js"></script>',</a> 10);

?></p>

<p><div id="sit_ov_from">

    <form name="fitem" method="post" action="<?php echo $action_url; ?>" onsubmit="return fitem_submit(this);">

    <input type="hidden" name="it_id[]" value="<?php echo $it_id; ?>">

    <input type="hidden" name="sw_direct"></p>

<p>    <input type="hidden" name="go_cart"> 

    <input type="hidden" name="url">

    </p>

<p>....</p>

<p>function fitem_submit(f)

{

    f.action = "<?php echo $action_url; ?>";

    f.target = "";

    

    if (document.pressed == "장바구니") {

      

      //  var msg = confirm('장바구니에 담았습니다. \n바로 확인하시겠습니까?');

      //  if( msg )

      //      f.go_cart.value = 1;

      //  else

      //      f.go_cart.value = 0;     

          swal({

            title : "장바구니에 담았습니다.",

            text : "장바구니로 이동하겠습니까?",      </p>

<p>            buttons : {

              cancle : {

                text : "계속쇼핑",

                value : false

              },

              confirm : {

                text : "장바구니이동",

              value : true

              },

            },

          })

          .then((value) => {

              if (value) {

                //이동버튼

                f.go_cart.value = 1;

                   }else

                   {

                     f.go_cart.value = 0;

                   }

          });

       

    } else { // 바로구매

        f.sw_direct.value = 1;

    }</p>

<p> </p>

<p>...</p>

<p>..</p>

<p>

 

 

 

 

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

답변 1개

채택된 답변
+20 포인트
4년 전

해당 방법처럼 소스를 구성할 수 없습니다

자바스크립트는 동시에, 즉 동기적 프로그래밍이기 때문에  해당 함수가 실행되고 결과값이 나와야 아래의 구문이 실행되는것이 아닌, swal 팝업창이 뜨면 then에서 처리값이 받기전에 아래의 구문들을 다 실행해버립니다. 예외적으로 confirm이나 alert의 경우 브라우저 자체의 네이티브 함수여서 해당 함수가 실행되면 사용자가 클릭을 할때까지 모든 행동이 멈추지만 그외의 스크립트에선 해당 방법을 사용할 수 없습니다. 서브밋 이벤트 안에서 confirm이나 alert의 기능을 대체하려면 alert나 confirm을 대체하는 함수의 콜백 이벤트 안에 submit을 넣어주셔야 합니다.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

J
JJpamiz
4년 전
답변 감사합니다. 짐작은 하고있었지만 명확하게 집어주셔서 감사합니다.

다른방법을 찾거나 포기를 해야겠네요.

감사합니다.

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

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

로그인