본문 바로가기
프로그래밍/자바스크립트

[Javascript] input 태그에서 oninput으로 숫자만 입력받기 (정규표현식) (from IE to Chrome)

by 커피는아아 2020. 12. 31.
반응형

input 태그에서 oninput으로 숫자만 입력받기 (정규표현식) (from IE to Chrome)

문제 코드

<input type="text" style="ime-mode:disabled" onkeypress"filterKey('[0-9]')" />
function filterKey(filter) {
    var key = String.fromCharCode(event.keyCode);
    var reg = new RegExp(filter);
    if(!reg.test(key)) event.returnValue = false;
}
  • ime-mode로 한글입력을 방지하고 filterKey 함수로 숫자만 입력하다록 제한을 두고 있다
  • 그러나 복사 붙여넣기는 여전히 가능하다
  • ime-mode는 ie를 제외하고 Edge(79 version 까지는 동작) Chrome, Safari등 브라우저에서 deprecated 및 지원되지 않는다

해결코드

<input type="text" oninput="this.value = this.value.replace(/[^0-9.]/g, '').replace(/(\..*)\./g, '$1');"/>
  • IE9 이상 버전부터 지원 된다.
  • 복사 붙여넣기 , 숫자를 제외한 모든 입력값은 입력되지 않는다.