본문 바로가기

자바스크립트(jquery)

input박스 숫자만 입력설정 방법

반응형

결론부터 얘기하자면 3번 방법인 replace함수를 사용하는게 가장 좋다고 생각한다

1. input 박스 type을 number로 설정

<input type="number"/>

가장 심플하지만 애매하다. 브라우저에 따라 input 박스에 증감 버튼이 생긴다.

맘에 안듬.

 

2. 입력된 key값 체크

<script type='text/javascript'>
//방법1
function checkNumber(event) {
  if(event.key === '.' || event.key === '-'
     || event.key >= 0 && event.key <= 9) {
    return true;
  }
  return false;
}

//방법2
 $(document).ready(function(){
   $("#num_chk").on("keyup", function() {
      $(this).val($(this).val().replace(/[^0-9]/g,""));
   });
 });

</script>

<html>
<input type='text' onkeypress='return checkNumber(event)'>
<input type='text' id='num_chk'>
</html>

키 이벤트를 체크하여 텍스트 입력을 받는 방법이다.

1번 방법의 단점은 복사 붙여넣기를 캐치할 수 없다는 점.

2번 방법은 숫자가 순간 보였다가 사라진다는 점.

3. oninput 이벤트 이용, replace와 정규식 활용

<html>
<input type="text" 
    oninput="this.value = this.value.replace(/[^0-9.]/g, '').replace(/(\..*)\./g, '$1');" />
</html>

oninput 은 input의 값이 변경될 때 발생한다.

oninput 이벤트 발생시 value값을 정규식과 replace 함수를 사용하여 바꿔준다.

복사 붙여넣기도 걸러 낼 수 있어서 가장 애용하는 방법이다.

/[^0-9.]/g 은

^ : not 역할

/g : 모든 문자열

이므로 숫자와 .(온점) 을 제외한 모든 문자열이 된다.

/(\..*)\./g, '$1' 은

\. : 소수점을 찾는다

\* : 이어지는 모든 문자열 찾는다 -> \..* 은 소수점 이후 모든 문자열을 찾는다.

\. : 그냥 하나의 소수점을 찾는다

$1 : 찾은 문자열 중 첫 번째만 남기고 모두 삭제

이므로 첫 번째 소수점 이후로 모든 소수점이 제거된다.

위에는 .(온점) 까지 허용했지만 숫자만 사용하도록 하려면

replace(/[^0-9]/g, '') 이렇게 사용하면 된다.

 

4. pattern 속성 활용

<form>
  <input type="text" pattern="[0-9]+">
  <input type='submit'>
</form>

input에 패턴 속성지정하여 입력값을 검증하는 방법이다.

이 방법의 유일한 단점은 같은 form 태그 안에 submit 버튼이 없는 경우 활용하기 힘들다는 점이다.

'자바스크립트(jquery)' 카테고리의 다른 글

javascript 파일다운로드  (0) 2024.03.22
각종 정규식 체크  (0) 2024.03.22
주민/외국인 등록번호 검사  (0) 2024.03.22
라디오버튼 check속성  (0) 2024.03.22
화살표함수(Arrow Function)  (0) 2024.03.21