riyenas0925 / Sejong_Track_Management

:school: 세종대학교 트랙관리 프로그램
Apache License 2.0
6 stars 2 forks source link

BUG : onsubmit 에 쓸 함수끼리 부울연산 안됨(원래 안됨?) #71

Closed kimhanui closed 4 years ago

kimhanui commented 4 years ago

원래 안됨?

폼( onsubmit )

<form id="joinForm" action="/memberJoin" method="post" onsubmit="return totalCheck()">

폼의 onsubmit은 return false가 뜨면 submit하지 못하고, true 뜨면 그대로 submit하는 옵션임.
아래 totalCheck()에서 true, false를 반환하고, 이는 idCheck()와 pwCorrect()를 이용해 결과를 출력함. (idCheck(), pwCorrect()는 확실히 결과출력하는 것 확인)

부울연산 안됨

function totalCheck() {
  return idCheck() && pwCorrect();
}

이게 안돼서 아래로 바꿈

function totalCheck() {
        if(idCheck() ==true){
            return (pwCorrect()==true)? true : false;
        }
        else
            return false;
        //return pwCorrect() && idCheck();
    }

아직 코드는 안올렷음.

riyenas0925 commented 4 years ago

@kimhanui console.log로 두 함수 상태값 출력하게 해서 한번 확인해봐 아니면 typeof 함수로 자료형 확인해봐고 됳것 같은데

kimhanui commented 4 years ago
    //비밀번호 재확인 체킹
    var test;
    function pwCorrect() {
        var pwRes;
        $("input[name=password]").keyup(function () {
            if ($("input[name=password]").val() == $("input[name=pwRe]").val()) {
                $("#pwCheckRes").html("비밀번호가 일치합니다.");
                pwRes = true;     
                test = 1; // 테스트
            } else {
                $("#pwCheckRes").html("비밀번호가 일치하지 않습니다.");
                pwRes = false;
                test = 0; // 테스트
            }
        });

        $("input[name=pwRe]").keyup(function () {
            if ($("input[name=password]").val() == $("input[name=pwRe]").val()) {
                $("#pwCheckRes").html("비밀번호가 일치합니다.");
                pwRes = true;
                test = 1; // 테스트
            } else {
                $("#pwCheckRes").html("비밀번호가 일치하지 않습니다.");
                pwRes = false;
                test = 0; // 테스트
            }
        });
        return pwRes;
    }

테스트

함수 안에 변수(pwRes) 두고, 리턴값 받아서 씀 -> undefined로 찍힘. (이건 왜안될까 🍆🍆 )

함수 바깥에 변수(test), 리턴안함 -> 콘솔에 잘 찍힘.

함수 형식 삭제, 내용을 밖으로 빼면(리턴x) 👇 -> 콘솔에 잘 찍힘.

        var pwRes;
        $("input[name=password]").keyup(function () {
            if ($("input[name=password]").val() == $("input[name=pwRe]").val()) {
                $("#pwCheckRes").html("비밀번호가 일치합니다.");
                pwRes = true; 
            } else {
                $("#pwCheckRes").html("비밀번호가 일치하지 않습니다.");
                pwRes = false;
            }
        });

        $("input[name=pwRe]").keyup(function () {
            if ($("input[name=password]").val() == $("input[name=pwRe]").val()) {
                $("#pwCheckRes").html("비밀번호가 일치합니다.");
                pwRes = true;
            } else {
                $("#pwCheckRes").html("비밀번호가 일치하지 않습니다.");
                pwRes = false;
            }
        });

정리

함수끼리 부울연산은 가능하나 함수 특징에 따라 지역변수가 리턴되지 않는(undefined)경우가 있다. -> why