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

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

QA

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

본문

안녕하세요.

 

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

 

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

 

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

 

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

 

item.form.skin.php내에

 

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

 

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

 

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

 

아래에 

add_javascript('<script src="https://unpkg.com/sweetalert/dist/sweetalert.min.js"></script>', 10);

 

추가하고

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

 


 
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
add_stylesheet('<link rel="stylesheet" href="'.G5_SHOP_CSS_URL.'/style.css">', 0);
add_javascript('<script src="https://unpkg.com/sweetalert/dist/sweetalert.min.js"></script>', 10);
?>
<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">
    <input type="hidden" name="go_cart"> 
    <input type="hidden" name="url">
    
....
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 : "장바구니로 이동하겠습니까?",      
            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;
    }
 
...
..

 

 

 

 

이 질문에 댓글 쓰기 :

답변 1

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

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

답변을 작성하시기 전에 로그인 해주세요.
전체 18
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT