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

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

QA

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

답변 1

본문

안녕하세요.

 

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

 

현재 영카트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을 넣어주셔야 합니다.

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 18
© SIRSOFT
현재 페이지 제일 처음으로