js 문자 인증 코드 입력 상자 수 동 구현

머리말
본 고 는 자신 이 수 동 으로 실현 하 는 전단 에서 흔히 볼 수 있 는 문자 인증 코드 입력 구성 요 소 를 기록 하고 수요 에서 점차적으로 최적화 하 는 과정 을 실현 한다.
본문
1.수요 분석
우선 효과 도 를 살 펴 보 자.
 
먼저 페이지 를 불 러 올 때 입력 상 자 는 초점 을 가 져 옵 니 다.사용자 가 숫자 를 입력 하면 초점 이 자동 으로 두 번 째 상자 로 넘 어 갑 니 다.네 상자 가 모두 입력 되면 제출 요청 을 보 내 는 것 을 모 의 합 니 다.여 기 는 하나의 탄 상자 로 입력 한 인증 코드 내용 을 출력 합 니 다.주류 프로 세 스 이외 의 수요:입력 상자 에 숫자 형식 만 입력 할 수 있 고 알파벳 을 입력 할 수 없습니다.비 숫자 형식 을 강제로 입력 하고 철회 키 를 눌 렀 을 때 입력 한 인증 코드 를 비 워 두 고 현재 초점 을 첫 번 째 입력 상자 로 전환 합 니 다.
2.전체 코드 구현.
대체적으로 사 고 는 페이지 를 불 러 올 때 첫 번 째 입력 상자 에 autofocus 속성 을 추가 하여 자동 으로 초점 을 얻 게 한 다음 에 키보드 클릭 이 벤트 를 감청 하 는 것 입 니 다.키보드 가 눌 렀 을 때 현재 버튼 이 숫자 버튼 인지 아 닌 지 를 판단 합 니 다.그렇지 않 으 면 현재 입력 상자 가 비어 있 고 초점 은 현재 입력 상자 에 있 습 니 다.숫자 라면.앞의 입력 상자 에 숫자 가 존재 하 는 지 여 부 를 판단 하고 존재 하지 않 으 면 앞 에 빈 입력 상자 로 초점 을 옮 깁 니 다.그렇지 않 으 면 현재 입력 상자 에 입력 하고 다음 입력 상자 로 초점 을 옮 깁 니 다.초점 은 입력 상자 의 위 류 를 통 해 이 루어 집 니 다.입력 길이 가 4 일 때 모든 입력 상자 의 숫자 를 문자열 로 연결 하여 탄 상자 로 알림 합 니 다.

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
      .check-div {
        width: 400px;
        height: 600px;
        margin: 100px auto;
        border: 1px solid slategrey;
        text-align: center;
      }
      h1 {
        font-size: 24px;
      }
      .input-div {
        margin-top: 100px;
      }
      input {
        margin-left: 5px;
        text-align: center;
        width: 50px;
        height: 50px;
        border: none;
        /*              ,  border*/
        outline: 1px solid black;
      }
      input:focus {
        outline: 2px solid #3494fe;
      }
    </style>
  </head>
  <body>
    <div class="check-div">
      <h1>      </h1>
      <div class="input-div">
        <input
          type="text"
          class="inputItem0"
          data-index="0"
          maxlength="1"
          autofocus
        />
        <input type="text" class="inputItem1" data-index="1" maxlength="1" />
        <input type="text" class="inputItem2" data-index="2" maxlength="1" />
        <input type="text" class="inputItem3" data-index="3" maxlength="1" />
      </div>
    </div>
    <script>
      var inputArr = document.getElementsByTagName("input");
      window.addEventListener("keyup", (e) => {
        let curIndex = e.target.getAttribute("data-index"); //         
        //    BackSpace         
        if (e && e.keyCode == 8) {
          console.log(22222222222);
          for (let j = 0; j <= 3; j++) {
            inputArr[j].value = "";
            inputArr[0].focus();
          }
          return;
        }
        console.log("e.keyCode", e.keyCode);
        //         
        if (!(e.keyCode >= 48 && e.keyCode <= 57)) {
          console.log(1111111111);
          inputArr[curIndex].value = "";
          return false;
        }
        //               
        var str = "";
        for (let j = 0; j <= 3; j++) {
          console.log(inputArr[j].value);
          str += inputArr[j].value;
        }

        var nextIndex = Number(curIndex) + 1;
        //              
        if (curIndex < 3 && str.length < 4) {
          for (let i = 0; i <= curIndex; i++) {
            //                 ,           ,                ,       
            if (!inputArr[i].value) {
              inputArr[curIndex].blur();
              inputArr[i].value = inputArr[curIndex].value;
              var index = i + 1;
              inputArr[index].focus();
              inputArr[curIndex].value = "";
              return;
            } else {
              var nextIndex = Number(curIndex) + 1;
              inputArr[nextIndex].focus();
            }
          }
        } else {
          alert("       " + str);
          //                      
        }
      });
    </script>
  </body>
</html>
총결산
js 문자 인증 코드 입력 상 자 를 수 동 으로 실현 하 는 것 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 js 문자 인증 코드 입력 상자 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!

좋은 웹페이지 즐겨찾기