자바스크립트 질문입니다~
본문
회원가입시 mb_4 필드에 사업자 등록번호를 받는데요.
사업자 등록번호 관련 유효성 검사를 하려고 합니다.
소스는 input 3개에서 받은 value를 합쳐서 mb_4에 저장을 합니다.
문제는 유효성 검사하려고 할때..
input의 name인 c_b_num[0],c_b_num[1],c_b_num[2] 의 value 합을 어떻게 가져 와야 하는지
잘모르겠습니다;
var total = c_b_num[0].value + c_b_num[1].value + c_b_num[2].value
이렇게 해도 안되는것 같습니다 ㅠㅠ
아래는 순서대로
html 코드와 javascript 코드입니다.
//html
<input type="text" name="c_b_num[0]" value="<?php echo (!$member['mb_id'] || $member['mb_4'])? $c_b_num[0]:'';?>" id="reg_mb_bn" class="frm_input inp_phone" size="10" maxlength="3" required>
<input type="text" name="c_b_num[1]" value="<?php echo (!$member['mb_id'] || $member['mb_4'])? $c_b_num[1]:'';?>" class="frm_input inp_phone" size="10" maxlength="2" required>
<input type="text" name="c_b_num[2]" value="<?php echo (!$member['mb_id'] || $member['mb_4'])? $c_b_num[2]:'';?>" class="frm_input inp_phone" size="10" maxlength="5" required>
// javascript
if (fregisterform.mb_4.value.length > 0)
{
// 2018-03-19 사업자 등록 번호 유효성 검사
// http://kimsg.tistory.com/224
var checkBar = fregisterform.mb_4.value.replace(/-/gi,'');
var checkSlice = checkBar.split("");
var checkNum = new Array(checkSlice);
var tmpvBizId, i, chkSum=0, c2, remander;
for (i=0; i<=7; i++) chkSum += checkNum[i] * checkBar.charAt(i);
c2 = "0" + (checkNum[8] * checkBar.charAt(8));
c2 = c2.substring(c2.length - 2, c2.length);
chkSum += Math.floor(c2.charAt(0)) + Math.floor(c2.charAt(1));
remander = (10 - (chkSum % 10)) % 10 ;
if (Math.floor(checkBar.charAt(9)) != remander) {
alert("사업자등록증에 기재된 번호와 동일한 번호를 입력해 주세요.");
return false;
}
}
답변 2
c_b_num[0]
c_b_num[1]
c_b_num[2]
위 name을 아래와 같이 모두 변경하고 script 짜봤습니다.
c_b_num[]
<form name="test_frm">
<input type="text" name="c_b_num[]" value="<?php echo (!$member['mb_id'] || $member['mb_4'])? $c_b_num[0]:'';?>" id="reg_mb_bn" class="frm_input inp_phone" size="10" maxlength="3" required>
<input type="text" name="c_b_num[]" value="<?php echo (!$member['mb_id'] || $member['mb_4'])? $c_b_num[1]:'';?>" class="frm_input inp_phone" size="10" maxlength="2" required>
<input type="text" name="c_b_num[]" value="<?php echo (!$member['mb_id'] || $member['mb_4'])? $c_b_num[2]:'';?>" class="frm_input inp_phone" size="10" maxlength="5" required>
</form>
<script>
function test(){
var c_b_num = document.test_frm["c_b_num[]"];
alert(c_b_num[0].value+c_b_num[1].value+c_b_num[2].value);
}
</script>
<a href="javascript:test();">test</a>
참고하시라고 글 남깁니다.
자바스크립트로 HTML의 변수명을 체크하시는데
PHP에 전달할 변수명으로 체크를 하셨습니다.
=>
HTML의 태그명을 배열로 구성하셨으면
JavaScript로 배열로 구성된 HTML값을 불러들여서
유효성 체크를 하시고
PHP로 전달할 변수명에 해당 유효성 정보를 넣어서
전달을 하셔야 정상적으로 전달됩니다.
받아서 화면에 뿌릴때는
반대로 작동되게 하셔야죠
PHP에서 전달받은 mb_4값을 JavaScript이던 HTML이던
구조에 맞게 분할해서 보이도록 하셔야 정상적으로
주고, 받고가 될겁니다.