본문 바로가기

개발일지/JavaScript + jquery

[js] 주민번호 13자리 체크 만들기

<!DOCTYPE html>
<html lang="en">
 <head>
  <meta charset="UTF-8">
  <title>주민체크</title>
  <script>
	function check(it){
		var idnum = it.idnum1.value + it.idnum2.value;
		if(idnum_chk(idnum) == true){ alert("주민번호가 확인되었습니다."); 
								 return true;}
			alert("주민번호가 잘 못 되었습니다.");
			it.idnum1.focus();
			return false;
	}
	function idnum_chk(jm){
		var idnumtot = 0;
		var idnumadd = "234567892345";
		for(i=0; i<12; i++){
			idnumtot = idnumtot + parseInt(jm.substring(i, i+1))
								* parseInt(idnumadd.substring(i, i+1));
		}//substring(i, i+1) 문자열 i 위치부터 i+1 전까지 잘라라
	  idnumtot = 11-(idnumtot%11);
	  if(idnumtot == 10) { idnumtot = 0; }
		else if(idnumtot == 11){ idnumtot = 1; }
	  if(parseInt(jm.substring(12, 13)) == idnumtot) return true;
	}
  </script>
 </head>
 <body>
  <form name="InputForm" onsubmit="return check(this);">
	<fieldset>
		<legend>주민번호</legend>
		<input type="password" name="idnum1" size="6" maxlength="6">-
		<input type="password" name="idnum2" size="7" maxlength="7"><br>
		<input type="submit" value="확인">
	</fieldset>
  </form>
 </body>
</html>

 

 

<form name="InputForm" onsubmit="return check(this);">
onsubmit="return check(this);" 디스를 갖고가서 체크하고(check) 다시 줘라(return)
원래는 잘 안 쓰지만 여기서는 체크 하려고 써줌
원래는 action=""으로 들어감

<fieldset>
<legend>주민번호</legend>
<input type="text" name="idnum1" size="6" maxlength="6">-
<input type="password" name="idnum2" size="7" maxlength="7"><br>
<input type="submit" value="확인">
</fieldset>

만들어줌

function check(it) 
--> it으로 받아줌

var idnum = it.idnum1.vaule
--> if는 form전체

idnum1.vaule 밸류는 안의 내용을 가르킴
-->첫번째 창의 입력 받은 전체 '글자'

var idnum = it.idnum1.vaule + it.idnum2.value;
-->it.idnum2.value를 함께 더해
--> idnum

체크를 해서 돌려 받아서 그것이 참인지 계산을 해야 됨

if(idnum_chk) == true) { alert("주민번호가 확인되었습니다."); 
       return true;}

참일 때
alert("주민번호가 잘 못 되었습니다.");
it.idnum.focus();
return false;
else: 안써도 괜찮음 return 있어서...

it.idnum.focus(); 다시 입력 받음
------------------------------------------------------------------------------------
function idnum_chk(jm){ }
진짜 체크하는 함수
jm으로 받음

var idnumtot = 0;
var idnumadd = "234567892345"


paseInt(jm.substring(i, i+1));
jm.substring
잘라주는 것
i부터 i+1까지 --> 한자리씩 자름

idnumtot = idnumtot + paseInt(jm.substring(i, i+1)) * paseInt(idnumadd.substring(i, i+1));
자르고 둘이 서로 곱해줌

----------------------------------------------------------------------------------
idnumtot = 11-(idnumtot%11);
11로 나눠서 11에서 뻬다. 그리고 idnum에 다시 넣어줌
----------------------------------------------------------------------------------
idnumtot = 11-(idnumtot%11); //11로 나눠서 11에서 뻬다. 그리고 idnum에 다시 넣어줌
  if(idnumtot == 10) { idnumtot = 0; } //10이 들어있으면 그 자리에 0을 넣어줌
  else if(idnumtot == 11){ idnumtot = 1; } //11이 들어있으면 그 자리에 1을 넣어줌
}
----------------------------------------------------------------------------------
if(idnumtot == 10) { idnumtot = 0; } //10이 들어있으면 그 자리에 0을 넣어줌
else if(idnumtot == 11){ idnumtot = 1; } //11이 들어있으면 그 자리에 1을 넣어줌
  if(parseInt(jm.sumString(12, 13)) == idnumtot) return true;
  //12,13사이를 자른 다음에 정수로 바꿔주고, 정수로 바꿔줌. 그리고 if로 같은 값인지 물어본다. 
  //맞다면 true가 돼서 넘어감. 어디로? if(idnum_chk) == true) { alert("주민번호가 확인되었습니다.");