JQuery 오류 질문
본문
<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 라는 속성이 없어서 그런거같네요 ~ㅎㅎ