채택완료

자바 스크립트 질문

2020-09-08 (화) 11:08:31 3,145
Copy
function form_check(act) {
    var f = document.frmcartlist;
    var cnt = f.records.value;

    if (act == "buy")
    {
        if($("input[name^=ct_chk]:checked").length < 1) {
            alert("주문하실 상품을 하나이상 선택해 주십시오.");
            return false;
        }

        if (<?php echo $member['mb_6'] ?> == '1') {
            alert("미납 포인트를 납부하셔야 결제가 가능합니다.");
            return false;
        } 

        f.act.value = act;
        f.submit();
    }
    else if (act == "alldelete")
    {
        f.act.value = act;
        f.submit();
    }
    else if (act == "seldelete")
    {
        if($("input[name^=ct_chk]:checked").length < 1) {
            alert("삭제하실 상품을 하나이상 선택해 주십시오.");
            return false;
        }

        f.act.value = act;
        f.submit();
    }

    return true;
}

위 소스에서

        if (<?php echo $member['mb_6'] ?> == '1') {
            alert("미납 포인트를 납부하셔야 결제가 가능합니다.");
            return false;
        } 

이게 문제인데

저걸 지우면 정상 작동(장바구니에서 구매하기, 바로 구매하기 등)이 됩니다.

근데 저걸 넣으면 정상 작동이 되지 않고 member['mb_6']  == '1' 일 경우만 정상 작동이 됩니다.

member['mb_6']가 1이 아닌 다른 값에서는 정상 작동하지 않습니다.

뭔가 잘못 적어 넣은건가요?

답변 6개 / 댓글 11개

채택된 답변
+20 포인트
2020-09-08 (화) 11:31:53

값이 없으면 0. 간단하게 아래 코드 추가해주면 되겠네요.

Copy
if ( parseInt(<?php echo $member['mb_6'] ?>)||0 == 1) {

답변에 대한 댓글 3개

헉 한번에 해결되네요 감사합니다 ㅠㅠ
sinbi // NaN이 false로 반환이 안되나봅니다

저는 이걸 넣어서 해결이 됐어요 ㅎㅎ

값이 비어있으니까 콘솔에서 보니까 오류를 뿜더군요

근데 mb_6라는게 회원은 어떻게 기본값 0으로 만든다고 해도 비회원은 비어있을거라 ㅎㅎ
2020-09-08 (화) 11:23:57

비교대상의 값이나 변수가 없기 때문에 안됩니다.

let check = "<?php echo $member['mb_6'] ?>";

if (check == "1" || check = "")

위처럼 변수에 값을 넣고 빈값인지 체크하시면 될것 같습니다.

답변에 대한 댓글 1개

if 다음엔 뭐가 와야 하나요?

1일 경우면 알러트인데 1이 아니거나 비어 있으면 뭐라고 해야 하나요?
2020-09-08 (화) 11:22:00

1이 아닌 경우에는 0이 아닌 값이 없는것 같습니다.

답변에 대한 댓글 2개

값이 없을 경우는 안되는건가요?
답변 너무너무 감사합니다 ㅠㅠ

밑에 비혼님이 답변해주셨는데 해결됐습니다

저 때문에 이렇게 답변해주시고 너무너무 감사합니다

오늘 좋은 하루되시고 꼭 로또 당첨 되세요 저랑 같이 1등해요!
2020-09-08 (화) 11:17:46

console.log("<?php echo $member['mb_6'] ?>");

위에 값 넣어보시고 크롬에서 F12 콘솔창 열은다음에

아무값이나 나오는지 확인하거나

alert("<?php echo $member['mb_6'] ?>"); 알림팝업에 값이 0 혹은 1이 뜨는지 확인해보세요.

답변에 대한 댓글 2개

콘솔창에서 확인하니

Uncaught SyntaxError: Unexpected token '=='

라고 떠서 해당 줄을 확인하니

if ( == '1') {
alert("미납 포인트를 납부하셔야 결제가 가능합니다.");
return false;
}

이렇게 나오네요

함수부분이 없는데 정상인건가요?

정상작동하는 회원으로 로그인해서 확인하니

if (1 == '1') {

이렇게 나옵니다
콘솔로그에선 비회원이나 작동 안되는 일반회원이나 console.log(""); 나옵니다
2020-09-08 (화) 11:14:21

console.log 안에 넣으면 mb6 값이 어떻게 나오나요?

답변에 대한 댓글 1개

헉 그건 뭔가요 어떻게 넣나요

보통 회원들은 mb_6 값은 기본 0입니다.

비회원들은 값이 없을 것으로 생각됩니다.

해당 증상은 비회원이나 다른 mb_6 값이 0인 회원들이나 같습니다
2020-09-08 (화) 11:11:57

mb6 값의 타입 때문일 수도 있습니다.

대입값이 '1'이 아닌 1로 해보세요.

답변에 대한 댓글 2개

방금 해봤습니다만 여전히 똑같네요 ㅠㅠ

mb_6 필드 타입은 varchar 255 입니다
mb_6이 1인 회원으로 로그인해서 테스트 다 해서

잘 된다라고 생각하고 있었는데 다른 회원에서는 구매하기가 눌러지지 않는 등

문제가 발생하네요 ㅠㅠ

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