JQuery 오류 질문

JQuery 오류 질문

QA

JQuery 오류 질문

답변 2

본문



<script>
    var checkForm = 1;
    var viewTerm1 = false;
    var clsColor = "#f639e2"
    var priViewTerm1 = false;
    var viewTerm2 = false;
    var priViewTerm2 = false;

    function chooseForm(radioName, value) {
        checkForm = value;
        var radios = document.getElementsByName(radioName);
        for (var i = 0, length = radios.length; i < length; i++) {
            document.getElementById('occ_form_' + radios[i].value).style.display = 'none';
            if (radios[i].checked) {
                document.getElementById('occ_form_' + radios[i].value).style.display = 'block';
            }
        }
    }

    function privateCheckForm() {
        var form = document.getElementById("privateForm");
        var el = form.elements;

        var message = {
            "occ_nick": "필명을 입력해주세요",
            "occ_phone": "전화번호를 입력해주세요",
            "occ_email": "이메일을 입력해주세요",
            "jumin1": "주민번호를 입력해주세요",
            "jumin2": "주민번호를 입력해주세요",
            "occ_bank": "은행명을 입력해주세요",
            "occ_name": "예금주명을 입력해주세요",
            "occ_accnumber": "계좌번호를를 입력해주세요",
            "file_bank": "통장사본파일을 넣어주세요",
            "file_occ_port": "포토폴리오파일을 넣어주세요"

        }
        var pathTrim=["file_bank","file_occ_port"];
        if (/[^a-zA-Z가-핳0-9]/gi.test(el["occ_nick"].value)) {
            //el["occ_nick"].value=el["occ_nick"].value.replace(/[^a-zA-Z가-핳0-9]/gi, "")
            alert("잘못된 형식의 필명입니다.")
            el["occ_nick"].value = "";
            el["occ_nick"].focus();
            return;
        }
        for (var x in message) {
            var msg = message[x];

            if(pathTrim.indexOf(x)< 0) el[x].value = el[x].value.trim();
            if (el[x].value == "") {

                alert(msg)
                el[x].focus();
                return;
            }
        }


        if (!priViewTerm1 || !priViewTerm2) {
            alert("약관을 확인해주세요..")
            return false;
        }
        if (!el["ter01"].checked) {
            alert("약관에 동의해 주세요");
            el["ter01"].focus();
        }
        if (!el["ter02"].checked) {
            alert("약관에 동의해주세요");
            el["ter02"].focus();
        }
        form.submit();
        return true
    }

    function companyCheckForm() {
        var form = document.getElementById("companyForm");
        var el = form.elements;
        var message = {
            "occ_nick_com": "필명을 입력해주세요",
            "occ_phone_com": "전화번호를 입력해주세요",
            "occ_email_com": "이메일을 입력해주세요",
            "occ_bank_com": "은행명을 입력해주세요",
            "occ_name_com": "예금주명을 입력해주세요",
            "occ_accnumber_com": "계좌번호를를 입력해주세요",
            "file_bank_com": "통장사본파일을 넣어주세요",
            "occ_company": "상호명을 넣어주세요",
            "occ_ceo": "대표자명을 넣어주세요",
            "occ_comnuber": "사업자등록번호를 넣어주세요",
            "file_business": "사업자등록증사본을 넣어주세요",
            "file_port_com": "통장사본파일을 넣어주세요"

        }
        var pathTrim=["file_bank_com","file_business","file_port_com"];
        if (/[^a-zA-Z가-핳0-9]/gi.test(el["occ_nick_com"].value)) {
            //el["occ_nick"].value=el["occ_nick"].value.replace(/[^a-zA-Z가-핳0-9]/gi, "")
            alert("잘못된 형식의 필명입니다.")
            el["occ_nick"].value = "";
            el["occ_nick"].focus();
            return;
        }
        for (var x in message) {
            var msg = message[x];
            if(pathTrim.indexOf(x)< 0) el[x].value = el[x].value.trim();
            if (el[x].value == "") {
                alert(msg)
                el[x].focus();
                return;
            }
        }
        if (!viewTerm1 || !viewTerm2) {
            alert("약관을 확인해주세요..")
            return false;
        }
        if (!el["ter01_com"].checked) {
            alert("약관에 동의해 주세요");
            el["ter01"].focus();
            return;
        }
        if (!el["ter02_com"].checked) {
            alert("약관에 동의해주세요");
            el["ter02"].focus();
            return;
        }
        console.log(form);
        form.submit();
        return true


    }
</script>


 

 

occupant_form.php:1130 Uncaught TypeError: Cannot read properties of undefined (reading 'value')

    at companyCheckForm (occupant_form.php:1130)

if(pathTrim.indexOf(x)< 0) el[x].value = el[x].value.trim();
    at HTMLInputElement.<anonymous> (occupant_form.php:1207)

companyCheckForm();

 


    at HTMLInputElement.dispatch (jquery-3.6.0.min.js:2)
    at HTMLInputElement.v.handle (jquery-3.6.0.min.js:2)

이렇게 오류가 납니다

 

 

현재   Submit 버튼을 누르면  privateCheckForm()은 잘넘어가는데 companyCheckForm(); 은 왜 안 넘어가는지 알수가 없네요 ㅠㅠ

 

 

이 질문에 댓글 쓰기 :

답변 2

el[x]에서 value속성이 없는 엘리먼트가 존재하기 때문에 오류가나고있습니다

 

companyCheckForm 에 입력된 message 변수안에 있는 엘리먼트들을 한번 파악해보세요 해당 변수에 지정되어있는 엘리먼트중에 value가 지정될수없거나 해당 엘리먼트가 없거나 해서 안넘어가는것같네요

 

젤 간단한 해결방법은

 

if(pathTrim.indexOf(x)< 0 && el[x]) el[x].value = el[x].value.trim();

이런식으로 해당 엘리먼트가 존재할때만 실행하도록 하는 방법이있습니다

el[x] 에서 value 라는 속성이 없어서 그런거같네요 ~ㅎㅎ

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