• 로그인
  • 장바구니에 상품이 없습니다.

home2 게시판 React 게시판 리액트 회원가입 폼관련 질문드립니다..

리액트 회원가입 폼관련 질문드립니다..

2 글 보임 - 1 에서 2 까지 (총 2 중에서)
  • 글쓴이
  • #76777

    서현욱
    참가자
    안녕하세요 선생님
    제가 스스로 회원가입 폼을 만들어보다 궁금한 부분이 생겨 질문드립니다.
    
    회원가입 폼을 만들다가 주민등록번호에 대한 부분을 생각해봤습니다.
     - input 필드에서 주민등록번호를 입력 시, 생기는 상황을 가정 (실제 코드는 material-ui/core를 이용하기때문에 TextField를 사용)
     1. 앞자리는 정상적으로 숫자가 보임
     2. 사용자가 -를 입력하지 않아도 자동으로 입력(입력해도 상관없음)
     3. 뒷자리는 첫 자리를 제외한 나머지는 마스킹 처리
    
    따라서 아래와 같이 코드를 작성해봤습니다.
    
    import React, { useState } from 'react';
    import { TextField, Button } from '@material-ui/core';
    import useWindowSize from './useWindowSize';
    import logo from '../logo.svg';
    function Signup() {
      const [username, setUsername] = useState('');
      const [password, setPassword] = useState('');
      const { width, height } = useWindowSize();
      const [jumin, setJumin] = useState('');
      const [realJumin, setRealJumin] = useState('');
      const handleJuminChange = (event) => {
        const maskingSymbol = '\u25CF'; // 마스킹 기호 문자열
        let input = event.target.value;
        input = input.replace('-', '');
        if (input.length > 6) {
          const ju1 = input.substring(0, 6);
          let ju2 = input.substring(6, 7);
          for (let i = 1; i < input.substring(6).length && i < 7; i++) {
            ju2 = ju2 + maskingSymbol;
          }
          input = ju1 + '-' + ju2;
        }
        setJumin(input);
        setRealJumin(event.target.value); // 실제 주민등록번호 저장
        console.log(jumin);
        console.log(realJumin);
      };
      return (
        <div
          style={{
            display: 'flex',
            justifyContent: 'center',
            alignItems: 'center',
            height: height,
          }}
        >
          <form
            style={{
              display: 'flex',
              flexDirection: 'column',
              alignItems: 'center',
            }}
          >
            <div style={{ marginBottom: 20 }}>
              < img src={logo} alt="로고" />
            </div>
            <div style={{ marginBottom: 10 }}>
              <TextField
                label="이메일"
                variant="outlined"
                value={username}
                onChange={(event) => setUsername(event.target.value)}
              />
            </div>
            <div style={{ marginBottom: 10 }}>
              <TextField
                label="비밀번호"
                type="password"
                variant="outlined"
                value={password}
                onChange={(event) => setPassword(event.target.value)}
              />
            </div>
            <div style={{ marginBottom: 10 }}>
              <TextField
                label="주민등록번호"
                value={jumin}
                variant="outlined"
                type="text"
                onChange={handleJuminChange}
                inputProps={{
                  maxLength: 14,
                  placeholder: 'ex) 123456-1234567',
                }}
              />
            </div>
            <div>
              <Button variant="contained" color="primary" type="submit">
                가입하기
              </Button>
            </div>
          </form>
        </div>
      );
    }
    export default Signup;
     
    console.log에 realjumin이 처음엔 한자리가 보이는데, 다른 숫자를 입력하면 값이 바뀌는 상황입니다.
    뭐 실제로는 이런식으로 주민등록번호를 처리하진 않겠지만,
    만약 이런상황에서 주민등록번호를 저장해야하는 상황이라면 어떻게 처리해야할지 궁금합니다.
    
    
    #76826

    codingapple
    키 마스터
    주민번호 뒷자리는 
    input 2개 이어붙이고 뒷쪽 input은 type="password" 넣는게 그런 상황에선 제일 간단해보입니다
2 글 보임 - 1 에서 2 까지 (총 2 중에서)
  • 답변은 로그인 후 가능합니다.

About

현재 월 700명 신규수강중입니다.

  (09:00~20:00) 빠른 상담은 카톡 플러스친구 코딩애플 (링크)
  admin@codingapple.com
  이용약관, 개인정보처리방침
ⓒ Codingapple, 강의 예제, 영상 복제 금지
top

© Codingapple, All rights reserved. 슈퍼로켓 에듀케이션 / 서울특별시 강동구 고덕로 19길 30 / 사업자등록번호 : 212-26-14752 온라인 교육학원업 / 통신판매업신고번호 : 제 2017-서울강동-0002 호 / 개인정보관리자 : 박종흠