자바스크립트 질문입니다~

자바스크립트 질문입니다~

QA

자바스크립트 질문입니다~

본문

회원가입시 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>

해봤는데
작동하지 않아서


var bizValueArr = new Array();
		var bizNumArr = document.getElementsByClassName('inp_biz');
		for (var i=0; i<bizNumArr.length; i++)
		{
			bizValueArr.push(bizNumArr[i].value);
		}
		var bizNumString = bizValueArr.toString();
		var bizID = bizNumString.replace(/,/gi,'');
		var bizSlice = bizID.split("");


		if (bizID.length > 0)
		{
			//사업자등록번호 체크 
			// bizID는 숫자만 10자리로 해서 문자열로 넘긴다.
			var checkID = new Array(1, 3, 7, 1, 3, 7, 1, 3, 5, 1);
			var tmpBizID, i, chkSum=0, c2, remander;
			bizID = bizID.replace(/-/gi,'');

			for (i=0; i<=7; i++) chkSum += checkID[i] * bizID.charAt(i);
			c2 = "0" + (checkID[8] * bizID.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(bizID.charAt(9)) != remander){
				alert("사업자등록증에 기재된 번호와 동일한 번호를 입력해 주세요.");
				return false;
			}
		}


이렇게 지저분하게 했습니다...

참고하시라고 글 남깁니다.

 

자바스크립트로 HTML의 변수명을 체크하시는데

 

PHP에 전달할 변수명으로 체크를 하셨습니다.

 

=>

 

HTML의 태그명을 배열로 구성하셨으면

JavaScript로 배열로 구성된 HTML값을 불러들여서

유효성 체크를 하시고

 

PHP로 전달할 변수명에 해당 유효성 정보를 넣어서 

전달을 하셔야 정상적으로 전달됩니다.

 

받아서 화면에 뿌릴때는 

반대로 작동되게 하셔야죠

 

PHP에서 전달받은 mb_4값을 JavaScript이던 HTML이던 

구조에 맞게 분할해서 보이도록 하셔야 정상적으로 

 

주고, 받고가 될겁니다.

 

 

답변을 작성하시기 전에 로그인 해주세요.
전체 123,161 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT