테스트 사이트 - 개발 중인 베타 버전입니다

생년월일 입력시 연속 숫자 금지.. 채택완료

길동엉아 1년 전 조회 8,805

</p>

<p>function onlyNumber(){</p>

<p>    const reg = /\D/g;</p>

<p>    event.target.value = event.target.value.replace(reg, "");</p>

<p>    let date = document.querySelector("#shengri");</p>

<p> </p>

<p>    // 문자열, 하이픈을 막기 위해 input event 사용</p>

<p>    date.addEventListener("input", () => {</p>

<p>   </p>

<p>    // 사용자 입력값은 모두 숫자만 받는다.(나머지는 ""처리)</p>

<p>    let val = date.value.replace(/\D/g, "");</p>

<p>    let leng = val.length;</p>

<p>   </p>

<p>    // 출력할 결과 변수</p>

<p>    let result = '';</p>

<p>   </p>

<p>    // 5개일때 - 20221 : 바로 출력</p>

<p>    if(leng < 6) result = val;</p>

<p>    // 6~7일 때 - 202210 : 2022-101으로 출력</p>

<p>    else if(leng < 8){</p>

<p>        result += val.substring(0,4);</p>

<p>        result += "-";</p>

<p>        result += val.substring(4);</p>

<p>    // 8개 일 때 - 2022-1010 : 2022-10-10으로 출력</p>

<p>    } else{</p>

<p>        result += val.substring(0,4);</p>

<p>        result += "-";</p>

<p>        result += val.substring(4,6);</p>

<p>        result += "-";</p>

<p>        result += val.substring(6);</p>

<p>    }</p>

<p>    date.value = result;</p>

<p> </p>

<p>    })</p>

<p>}</p>

<p>

생년월일을 입력받고 있는데 

같은 숫자를 8번 치거나 

예) 00000000, 11111111, 22222222

 

또는 12121212식으로 입력이 안되도록 하려면 어떻게 해야 할까요.. 

초보라 구글링을 해도 잘 모르겠네요 ㅠㅠ

댓글을 작성하려면 로그인이 필요합니다.

답변 2개

채택된 답변
+20 포인트

맞게 수정한지는 모르겠지만 아래 소스코드 남깁니다.

 

</p>

<p>function onlyNumber() {

    const reg = /\D/g;

    event.target.value = event.target.value.replace(reg, "");

    let date = document.querySelector("#shengri");</p>

<p>    // 문자열, 하이픈을 막기 위해 input event 사용

    date.addEventListener("input", () => {

        // 사용자 입력값은 모두 숫자만 받는다.(나머지는 ""처리)

        let val = date.value.replace(/\D/g, "");

        let leng = val.length;</p>

<p>        // 출력할 결과 변수

        let result = '';</p>

<p>        // 5개일때 - 20221 : 바로 출력

        if (leng < 6) result = val;

        // 6~7일 때 - 202210 : 2022-101으로 출력

        else if (leng < 8) {

            result += val.substring(0, 4);

            result += "-";

            result += val.substring(4);

        // 8개 일 때 - 2022-1010 : 2022-10-10으로 출력

        } else {

            result += val.substring(0, 4);

            result += "-";

            result += val.substring(4, 6);

            result += "-";

            result += val.substring(6);

        }</p>

<p>        // 같은 번호 연속으로 입력 방지

        if (result.length > 1 && result[result.length - 1] === result[result.length - 2]) {

            result = result.substring(0, result.length - 1);

        }</p>

<p>        date.value = result;

    });

}

 </p>

<pre tabindex="0">
<code data-lang="htmlmixed" id="actual-html-code"><input type="text" oninput="</code>onlyNumber<code data-lang="htmlmixed">()"></code></pre>

<p>

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

길동엉아
1년 전
감사합니다. ㅠㅠ

댓글을 작성하려면 로그인이 필요합니다.

다음을 참고해서 수정하시면 되지 않을까 합니다.

</p>

<p>function onlyNumber() {

    const reg = /\D/g;

    let date = document.querySelector("#shengri");</p>

<p>    // 문자열, 하이픈을 막기 위해 input event 사용

    date.addEventListener("input", (event) => {

        // 사용자 입력값은 모두 숫자만 받는다.(나머지는 ""처리)

        let val = date.value.replace(/\D/g, "");

        let leng = val.length;</p>

<p>        // 출력할 결과 변수

        let result = '';</p>

<p>        // 8개 이상이면 처리하지 않음

        if (leng >= 8) {

            date.value = date.value.slice(0, 8);

            return;

        }</p>

<p>        // 동일한 숫자로만 이루어진 경우나 일련 번호 패턴을 확인

        if (/^(\d)\1+$/.test(val) || /^(?:(\d)\1)+$/.test(val)) {

            // 동일한 숫자로만 이루어진 경우나 일련 번호 패턴을 입력한 경우

            date.value = date.value.slice(0, -1); // 마지막 입력값 제거

            return;

        }</p>

<p>        // 5개일때 - 20221 : 바로 출력

        if (leng < 6) result = val;

        // 6~7일 때 - 202210 : 2022-101으로 출력

        else if (leng < 8) {

            result += val.substring(0, 4);

            result += "-";

            result += val.substring(4);

            // 8개 이상이면 처리하지 않음

        } else {

            result += val.substring(0, 4);

            result += "-";

            result += val.substring(4, 6);

            result += "-";

            result += val.substring(6);

        }

        date.value = result;

    });

}

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인