복붙노트

[JQUERY] HTML은 텍스트 입력은 숫자 만 입력 가능

JQUERY

HTML은 텍스트 입력은 숫자 만 입력 가능

해결법


  1. 1.참고 :이 업데이트 된 대답이다. 댓글은 아래의 키 코드 주위에 엉망이 이전 버전을 참조하십시오.

    참고 :이 업데이트 된 대답이다. 댓글은 아래의 키 코드 주위에 엉망이 이전 버전을 참조하십시오.

    JSFiddle에 직접보십시오.

    당신은 지원이, 붙여 넣기 드래그 + 드롭, 키보드 단축키, 상황에 맞는 메뉴 조작, 비 typeable 키, 캐럿 위치, 다른 키보드 레이아웃, 그리고 모든 브라우저를 복사 + (다음과 같이 SetInputFilter 기능으로 텍스트 <입력>의 입력 값을 필터링 할 수 있습니다 ) IE 9 가입일 :

    // Restricts input for the given textbox to the given inputFilter function.
    function setInputFilter(textbox, inputFilter) {
      ["input", "keydown", "keyup", "mousedown", "mouseup", "select", "contextmenu", "drop"].forEach(function(event) {
        textbox.addEventListener(event, function() {
          if (inputFilter(this.value)) {
            this.oldValue = this.value;
            this.oldSelectionStart = this.selectionStart;
            this.oldSelectionEnd = this.selectionEnd;
          } else if (this.hasOwnProperty("oldValue")) {
            this.value = this.oldValue;
            this.setSelectionRange(this.oldSelectionStart, this.oldSelectionEnd);
          } else {
            this.value = "";
          }
        });
      });
    }
    

    이제 입력 필터를 설치합니다 같이 SetInputFilter 기능을 사용할 수 있습니다 :

    setInputFilter(document.getElementById("myTextBox"), function(value) {
      return /^\d*\.?\d*$/.test(value); // Allow digits and '.' only, using a RegExp
    });
    

    이상의 입력 필터 예는 JSFiddle 데모를 참조하십시오. 또한 당신은 여전히 ​​서버 측 유효성 검사를 수행해야합니다!

    다음은이의 타이프 버전입니다.

    function setInputFilter(textbox: Element, inputFilter: (value: string) => boolean): void {
        ["input", "keydown", "keyup", "mousedown", "mouseup", "select", "contextmenu", "drop"].forEach(function(event) {
            textbox.addEventListener(event, function(this: (HTMLInputElement | HTMLTextAreaElement) & {oldValue: string; oldSelectionStart: number | null, oldSelectionEnd: number | null}) {
                if (inputFilter(this.value)) {
                    this.oldValue = this.value;
                    this.oldSelectionStart = this.selectionStart;
                    this.oldSelectionEnd = this.selectionEnd;
                } else if (Object.prototype.hasOwnProperty.call(this, 'oldValue')) {
                    this.value = this.oldValue;
                    if (this.oldSelectionStart !== null &&
                        this.oldSelectionEnd !== null) {
                        this.setSelectionRange(this.oldSelectionStart, this.oldSelectionEnd);
                    }
                } else {
                    this.value = "";
                }
            });
        });
    }
    

    이의의 jQuery 버전도 있습니다. 이 답변을 참조하십시오.

    HTML 5는 <입력 유형 = "숫자"> (사양 참조)하지만, 브라우저 지원은 다양합니다 네이티브 솔루션을 제공합니다 :

    w3schools.com에 직접보십시오.


  2. 2.이 DOM을 사용

    이 DOM을 사용

    <input type='text' onkeypress='validate(event)' />
    

    그리고이 스크립트

    function validate(evt) {
      var theEvent = evt || window.event;
    
      // Handle paste
      if (theEvent.type === 'paste') {
          key = event.clipboardData.getData('text/plain');
      } else {
      // Handle key press
          var key = theEvent.keyCode || theEvent.which;
          key = String.fromCharCode(key);
      }
      var regex = /[0-9]|\./;
      if( !regex.test(key) ) {
        theEvent.returnValue = false;
        if(theEvent.preventDefault) theEvent.preventDefault();
      }
    }
    

  3. 3.나는이에 좋은 답변을 위해 오랫동안 열심히 검색 한, 우리는 필사적으로 <입력 유형 = "숫자"를 필요로하지만, 짧은 그,이 둘은 내가 가지고 올 수있는 가장 간결한의 방법은 다음과 같습니다

    나는이에 좋은 답변을 위해 오랫동안 열심히 검색 한, 우리는 필사적으로 <입력 유형 = "숫자"를 필요로하지만, 짧은 그,이 둘은 내가 가지고 올 수있는 가장 간결한의 방법은 다음과 같습니다

    <input type="text" 
           onkeyup="this.value=this.value.replace(/[^\d]/,'')">
    

    당신이 순간적인 삭제되기 전에 게재가 비 승인 된 문자를 싫어하는 경우, 방법은 아래에있는 내 솔루션입니다. 수많은 추가 조건을 참고,이 탐색 및 단축키의 모든 종류를 사용하지 않도록하는 것입니다. 사람이를 compactify하는 방법을 알고있는 경우, 저희에게 알려주십시오!

    <input type="text" 
    onkeydown="return ( event.ctrlKey || event.altKey 
                        || (47<event.keyCode && event.keyCode<58 && event.shiftKey==false) 
                        || (95<event.keyCode && event.keyCode<106)
                        || (event.keyCode==8) || (event.keyCode==9) 
                        || (event.keyCode>34 && event.keyCode<40) 
                        || (event.keyCode==46) )">
    

  4. 4.여기에 더 이상 정확히 하나의 진수를 허용하지만, 간단한 하나입니다 :

    여기에 더 이상 정확히 하나의 진수를 허용하지만, 간단한 하나입니다 :

    = "this.value = this.value.replace (/ [^ 0-9.] / g '') oninput


  5. 5.나를 위해 좋은 작품 그리고 또 하나의 예 :

    나를 위해 좋은 작품 그리고 또 하나의 예 :

    function validateNumber(event) {
        var key = window.event ? event.keyCode : event.which;
        if (event.keyCode === 8 || event.keyCode === 46) {
            return true;
        } else if ( key < 48 || key > 57 ) {
            return false;
        } else {
            return true;
        }
    };
    

    또한 키 누르기 이벤트에 첨부

    $(document).ready(function(){
        $('[id^=edit]').keypress(validateNumber);
    });
    

    그리고 HTML :

    <input type="input" id="edit1" value="0" size="5" maxlength="5" />
    

    여기 jsFiddle 예는


  6. 6.대부분의 대답은 여기에 모든 키 - 이벤트를 사용하는 약점을 가지고있다.

    대부분의 대답은 여기에 모든 키 - 이벤트를 사용하는 약점을 가지고있다.

    답변의 대부분은 붙여 더 원치 않는 행동 + 복사, 키보드 매크로 텍스트 선택을 할 수있는 능력을 제한하는 것, 다른 사람은 기관총으로 파리를 죽이고 특정의 jQuery 플러그인에 의존하는 것.

    이 간단한 해결책은 (음성 - 텍스트 등을 오른쪽 클릭하면 복사 + 붙여 넣기, + 복사, 키 스트로크 붙여 넣기)에 관계없이 입력 메커니즘의 나 크로스 플랫폼을 위해 최선을 작동하는 것 같다. 모든 텍스트 선택 키보드 매크로는 심지어 스크립트에서 숫자가 아닌 값을 설정하는 사람의 능력을 제한 할 일 여전히 것이고,.

    function forceNumeric(){
        var $input = $(this);
        $input.val($input.val().replace(/[^\d]+/g,''));
    }
    $('body').on('propertychange input', 'input[type="number"]', forceNumeric);
    

  7. 7.HTML5는 <입력 유형 = 수>, 당신을 위해 잘 들린다 있습니다. 현재, 오페라는 기본적으로 지원하지만, 자바 스크립트 구현이 프로젝트가있다.

    HTML5는 <입력 유형 = 수>, 당신을 위해 잘 들린다 있습니다. 현재, 오페라는 기본적으로 지원하지만, 자바 스크립트 구현이 프로젝트가있다.


  8. 8.당신이 사용할 수 있도록 HTML5는 정규 표현식에를 지원합니다 :

    당신이 사용할 수 있도록 HTML5는 정규 표현식에를 지원합니다 :

    <input id="numbersOnly" pattern="[0-9.]+" type="text">
    

    경고 : 일부 브라우저는 아직 지원하지 않습니다.


  9. 9.나는 여기에 언급 된 두 답변의 조합을 사용하기로 선택 즉,

    나는 여기에 언급 된 두 답변의 조합을 사용하기로 선택 즉,

    function isNumberKey(evt){
        var charCode = (evt.which) ? evt.which : evt.keyCode
        return !(charCode > 31 && (charCode < 48 || charCode > 57));
    }
    


  10. 10.자바 스크립트

    자바 스크립트

    function validateNumber(evt) {
        var e = evt || window.event;
        var key = e.keyCode || e.which;
    
        if (!e.shiftKey && !e.altKey && !e.ctrlKey &&
        // numbers   
        key >= 48 && key <= 57 ||
        // Numeric keypad
        key >= 96 && key <= 105 ||
        // Backspace and Tab and Enter
        key == 8 || key == 9 || key == 13 ||
        // Home and End
        key == 35 || key == 36 ||
        // left and right arrows
        key == 37 || key == 39 ||
        // Del and Ins
        key == 46 || key == 45) {
            // input is VALID
        }
        else {
            // input is INVALID
            e.returnValue = false;
            if (e.preventDefault) e.preventDefault();
        }
    }
    

    당신이 쉼표, 마침표 및 마이너스를 추가 할 수 있습니다 추가 (, .-)

      // comma, period and minus, . on keypad
      key == 190 || key == 188 || key == 109 || key == 110 ||
    

    HTML

    <input type="text" onkeydown="validateNumber(event);"/ >
    

  11. 11.그래서 간단 ....

    그래서 간단 ....

    // 자바 스크립트 함수에서 (HTML이나 PHP를 사용할 수 있습니다).

    function isNumberKey(evt){
        var charCode = (evt.which) ? evt.which : evt.keyCode;
        if (charCode > 31 && (charCode < 48 || charCode > 57))
            return false;
        return true;
    }
    

    양식 입력의 경우 :

    <input type=text name=form_number size=20 maxlength=12 onkeypress='return isNumberKey(event)'>
    

    최대 입력으로. (이러한 위는 12 자리 숫자 가능)


  12. 12.이 개 솔루션 :

    이 개 솔루션 :

    (jQuery를 검증 플러그인 예를 들어) 양식 유효성 검사기를 사용하여

    정규 표현식으로 입력 필드의 이벤트 (사용자가 필드 단풍 즉, 경우)에 onblur 동안 검사를 수행합니다 :

    <script type="text/javascript">
    function testField(field) {
        var regExpr = new RegExp("^\d*\.?\d*$");
        if (!regExpr.test(field.value)) {
          // Case of error
          field.value = "";
        }
    }
    
    </script>
    
    <input type="text" ... onblur="testField(this);"/>
    

  13. 13.더 안전한 방식 대신 키 누름을 하이재킹 필터 키 코드하려고 노력 입력의 값을 확인한다.

    더 안전한 방식 대신 키 누름을 하이재킹 필터 키 코드하려고 노력 입력의 값을 확인한다.

    사용자가 사용하는 키보드의 화살표에 무료로이 방법은, 수정 키, 백 스페이스, 삭제, 사용 드래그 앤 드롭 텍스트, 심지어 사용 접근성 입력을 붙여 비표준 keyboars, 사용 마우스를 사용합니다.

    아래 스크립트는 양수와 음수를 할 수 있습니다

    1
    10
    100.0
    100.01
    -1
    -1.0
    -10.00
    1.0.0 //not allowed
    

    VAR = document.getElementById를 입력 ( '횟수'); input.onkeyup = input.onchange = enforceFloat; // 만 플로트 inputed 될 수 있음을 시행 enforceFloat 함수 () { VAR 유효 = /^\-?\d+\.\d*$|^\-?[\d]*$/을; VAR 번호 /\-\d+\.\d*|\-[\d]*|[\d]+\.[\d]*|[\d]+/ =; 만약 (! valid.test (this.value)) { VAR N = this.value.match (번호); this.value = N? N [0] ''; } } <입력 ID = "숫자"값 = "- 3.1415"자리 = "숫자 입력"오토 포커스>

    편집 : 나는 지금 구식 생각 때문에 나는 나의 오래된 대답을 제거했다.


  14. 14.당신은 이것에 대한 패턴을 사용할 수 있습니다 :

    당신은 이것에 대한 패턴을 사용할 수 있습니다 :

    <input id="numbers" pattern="[0-9.]+" type="number">
    

    여기에서 완전한 모바일 웹 사이트 인터페이스 도움말을 볼 수 있습니다.


  15. 15.상술 한 솔루션을 검색 할 수 있습니다. 이 사용자는 숫자 값을 입력 할 수 있습니다에서, 또한 사용자가 복사, 붙여 넣기, 드래그를 입력 드롭 할 수 없습니다.

    상술 한 솔루션을 검색 할 수 있습니다. 이 사용자는 숫자 값을 입력 할 수 있습니다에서, 또한 사용자가 복사, 붙여 넣기, 드래그를 입력 드롭 할 수 없습니다.

    0,1,2,3,4,5,6,7,8,9
    

    $ (문서) .ready (함수 () { $ ( '# 번호'). 바인드 (함수 (예 "컷 드래그 드롭을 붙여 복사") { e.preventDefault (); }); }); 함수 isNumberKey (EVT) { VAR charCode 값 = (evt.which)? evt.which : evt.keyCode; 경우 (charCode 값> 31 && (charCode 값 <48 || charCode 값> 57)) false를 반환; true를 반환; } <링크 HREF = "https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"REL = "스타일"/> <스크립트 SRC = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js">

    그렇지 작동하는지 알려주세요.


  16. 16.하나 더 예를 들어 당신이 입력 필드에 숫자 만 추가 할 수있는 문자 수 없습니다

    하나 더 예를 들어 당신이 입력 필드에 숫자 만 추가 할 수있는 문자 수 없습니다

    <input type="text" class="form-control" id="phone" name="phone" placeholder="PHONE" spellcheck="false" oninput="this.value = this.value.replace(/[^0-9.]/g, '').replace(/(\..*)\./g, '$1');">
    

  17. 17.당신은 알파 또는 숫자는 <입력 유형 = "숫자"> 사용할 수 사이의 장치 (어쩌면 휴대 전화)에 제안합니다.

    당신은 알파 또는 숫자는 <입력 유형 = "숫자"> 사용할 수 사이의 장치 (어쩌면 휴대 전화)에 제안합니다.


  18. 18.jQuery를가 대신 event.keyCode 또는 event.which보고의) (대체 사용하는 짧고 달콤한 구현 :

    jQuery를가 대신 event.keyCode 또는 event.which보고의) (대체 사용하는 짧고 달콤한 구현 :

    $('input.numeric').live('keyup', function(e) {
      $(this).val($(this).val().replace(/[^0-9]/g, ''));
    });
    

    유형이 지정된 문자가 잠시 나타나고 CTRL / CMD + A가 약간 이상한 행동을 보인다 만 작은 부작용.


  19. 19.입력 TYPE = "숫자"는 HTML5 속성이다.

    입력 TYPE = "숫자"는 HTML5 속성이다.

    다른 경우에는이 당신을 도울 것입니다 :

    function isNumberKey(evt){
        var charCode = (evt.which) ? evt.which : evt.keyCode
        if (charCode > 31 && (charCode < 48 || charCode > 57))
            return false;
        return true;
    }
    
    <input type="number" name="somecode" onkeypress="return isNumberKey(event)"/>
    

  20. 20.자바 스크립트 코드 :

    자바 스크립트 코드 :

    function validate(evt)
    {
        if(evt.keyCode!=8)
        {
            var theEvent = evt || window.event;
            var key = theEvent.keyCode || theEvent.which;
            key = String.fromCharCode(key);
            var regex = /[0-9]|\./;
            if (!regex.test(key))
            {
                theEvent.returnValue = false;
    
                if (theEvent.preventDefault)
                    theEvent.preventDefault();
                }
            }
        }
    

    HTML 코드 :

    <input type='text' name='price' value='0' onkeypress='validate(event)'/>
    

    백 스페이스 키 코드가 8하고 버그 우회 할 수있는 쉬운 방법이 그래서 정규식 표현, 그것을하지 않기 때문에 완벽하게 작동합니다 :)


  21. 21.단지 사용 유형 = 이제이 속성은 대부분의 브라우저에서 지원하는 "수"

    단지 사용 유형 = 이제이 속성은 대부분의 브라우저에서 지원하는 "수"

    <input type="number" maxlength="3" ng-bind="first">
    

  22. 22.이 문제를 해결하기위한 쉬운 방법은 예를 들어 텍스트 상자에 입력 한 정규식 부르는 것들은과 유효성에 jQuery를 기능을 구현하는 것입니다 :

    이 문제를 해결하기위한 쉬운 방법은 예를 들어 텍스트 상자에 입력 한 정규식 부르는 것들은과 유효성에 jQuery를 기능을 구현하는 것입니다 :

    HTML 코드 :

    <input class="integerInput" type="text">
    

    그리고 JS는 jQuery를 사용하여 기능

    $(function() {
        $('.integerInput').on('input', function() {
          this.value = this.value
            .replace(/[^\d]/g, '');// numbers and decimals only
    
        });
    });
    

    () {(기능 $ $ ( '. integerInput'). ( '입력'기능에 () { this.value = this.value .replace (/ [^ \ D] / g ''); // 숫자와 단지 소수 }); }); <스크립트 SRC = "https://code.jquery.com/jquery-2.2.4.min.js" 무결성 = "SHA256 - BbhdlvQf / xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44 =" crossorigin = "익명">


  23. 23.jQuery를 사용에 그냥 다른 변종

    jQuery를 사용에 그냥 다른 변종

    $(".numeric").keypress(function() {
        return (/\d/.test(String.fromCharCode(event.which) ))
    });
    

  24. 24.당신은 또한 같은 숫자로 강제 자체에 (기본적으로 문자열로 처리됩니다) 입력 값을 비교할 수 있습니다

    당신은 또한 같은 숫자로 강제 자체에 (기본적으로 문자열로 처리됩니다) 입력 값을 비교할 수 있습니다

    if(event.target.value == event.target.value * 1) {
        // returns true if input value is numeric string
    }
    

    그러나, 당신은의 keyup 등과 같은 이벤트에 바인드해야


  25. 25.

    <input name="amount" type="text" value="Only number in here"/> 
    
    <script>
        $('input[name=amount]').keyup(function(){
            $(this).val($(this).val().replace(/[^\d]/,''));
        });
    </script>
    

  26. 26.나는 작게 그러나 나는 그들처럼 훌륭한 답변을보고 가능한 한 간단하게, 그래서 아마 누군가는 도움이됩니다. 이 같은 자바 스크립트 번호 () 및 때는 isNaN 기능을 사용합니다 :

    나는 작게 그러나 나는 그들처럼 훌륭한 답변을보고 가능한 한 간단하게, 그래서 아마 누군가는 도움이됩니다. 이 같은 자바 스크립트 번호 () 및 때는 isNaN 기능을 사용합니다 :

    if(isNaN(Number(str))) {
       // ... Exception it is NOT a number
    } else {
       // ... Do something you have a number
    }
    

    도움이 되었기를 바랍니다.


  27. 27.이 DOM을 사용합니다 :

    이 DOM을 사용합니다 :

    <input type = "text" onkeydown = "validate(event)"/>
    

    그리고이 스크립트 :

    validate = function(evt)
    {
        if ([8, 46, 37, 39, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 35, 36].indexOf(evt.keyCode || evt.which) == -1)
        {
            evt.returnValue = false;
            if(evt.preventDefault){evt.preventDefault();}
        }
    }
    

    ... OR의 두 가지 사용하여 같이 IndexOf없이이 스크립트, ...

    validate = function(evt)
    {
        var CharValidate = new Array("08", "046", "039", "948", "235");
        var number_pressed = false;
        for (i = 0; i < 5; i++)
        {
            for (Ncount = 0; Ncount < parseInt(CharValidate[i].substring(0, 1)) + 1; Ncount++)
            {
                if ((evt.keyCode || evt.which) == parseInt(CharValidate[i].substring(1, CharValidate[i].lenght)) + Ncount)
                {
                    number_pressed = true;
                }
            }
        }
        if (number_pressed == false)
        {
            evt.returnValue = false;
            if(evt.preventDefault){evt.preventDefault();}
        }
    }
    

    onKeyDown에 속성이 때 onKeyPress 속성 전에 체크 때문에, 대신 때 onKeyPress의 onKeyDown에 속성을 사용했다. 문제는 구글 크롬 브라우저에있을 것입니다.

    속성 "때 onKeyPress"로, TAB는 구글 크롬의 "로 preventDefault"을 제어 할 수없는 것, 그러나 "onKeyDown에"속성과 함께, TAB이 제어된다!

    TAB에 대한 ASCII 코드 => 9

    첫 번째 스크립트는하지만, ASCII 문자의 배열이 모든 키가 있어야합니다, 두 번째보다 적은 코드가 있습니다.

    두 번째 스크립트는 처음보다 훨씬 더 큰이지만, 배열은 모든 키를 필요로하지 않습니다. 어레이의 각 위치에서의 첫 번째 숫자는 각 위치 판독 횟수이다. 각 읽기의 경우, 다음 단계로 1 증가합니다. 예를 들면 : NCount = 0

    48 + 48 = NCount

    NCount + +

    48 + 49 = NCount

    NCount + +

    ...

    48 + 57 = NCount 숫자 키의 경우 10 (0-9),하지만 그들은 100 만한다면 그것은 모든 키 배열을 만들 의미가 없습니다.

    ASCII 코드 :


  28. 28.이 개선 된 기능입니다 :

    이 개선 된 기능입니다 :

    function validateNumber(evt) {
      var theEvent = evt || window.event;
      var key = theEvent.keyCode || theEvent.which;
      if ((key < 48 || key > 57) && !(key == 8 || key == 9 || key == 13 || key == 37 || key == 39 || key == 46) ){
        theEvent.returnValue = false;
        if (theEvent.preventDefault) theEvent.preventDefault();
      }
    }
    

  29. 29.가장 좋은 방법 (번호 모든 종류의 수 - 실제 음, 실제 양의 정수 음의 정수 양)입니다 :

    가장 좋은 방법 (번호 모든 종류의 수 - 실제 음, 실제 양의 정수 음의 정수 양)입니다 :

    $(input).keypress(function (evt){
        var theEvent = evt || window.event;
        var key = theEvent.keyCode || theEvent.which;
        key = String.fromCharCode( key );
        var regex = /[-\d\.]/; // dowolna liczba (+- ,.) :)
        var objRegex = /^-?\d*[\.]?\d*$/;
        var val = $(evt.target).val();
        if(!regex.test(key) || !objRegex.test(val+key) || 
                !theEvent.keyCode == 46 || !theEvent.keyCode == 8) {
            theEvent.returnValue = false;
            if(theEvent.preventDefault) theEvent.preventDefault();
        };
    }); 
    

  30. 30.이 geowa4의 솔루션의 확장 버전입니다. 지원의 최소 및 최대 속성. 숫자 범위를 벗어나면, 이전 값을 도시한다.

    이 geowa4의 솔루션의 확장 버전입니다. 지원의 최소 및 최대 속성. 숫자 범위를 벗어나면, 이전 값을 도시한다.

    당신은 여기를 테스트 할 수 있습니다.

    구문 :

    function number(e) {
    var theEvent = e || window.event;
    var key = theEvent.keyCode || theEvent.which;
    if(key!=13&&key!=9){//allow enter and tab
      key = String.fromCharCode( key );
      var regex = /[0-9]|\./;
      if( !regex.test(key)) {
        theEvent.returnValue = false;
        if(theEvent.preventDefault) theEvent.preventDefault();
        }   
      }
    }
    
    $(document).ready(function(){
        $("input[type=text]").filter(".number,.NUMBER").on({
            "focus":function(e){
             $(e.target).data('oldValue',$(e.target).val());
                },
            "keypress":function(e){
                    e.target.oldvalue = e.target.value;
                    number(e);
                },
            "change":function(e){
                var t = e.target;
                var min = $(t).attr("min");
                var max = $(t).attr("max");
                var val = parseInt($(t).val(),10);          
                if( val<min || max<val)
                    {
                        alert("Error!");
                        $(t).val($(t).data('oldValue'));
                    }
    
                }       
        });     
    });
    

    입력 동적 사용이있는 경우 :

    $(document).ready(function(){
        $("body").on("focus","input[type=text].number,.NUMBER",function(e){
            $(e.target).data('oldValue',$(e.target).val());
        }); 
        $("body").on("keypress","input[type=text].number,.NUMBER",function(e){
            e.target.oldvalue = e.target.value;
            number(e);
        }); 
        $("body").on("change","input[type=text].number,.NUMBER",function(e){
            var t = e.target
            var min = $(t).attr("min");
            var max = $(t).attr("max");
            var val = parseInt($(t).val());         
            if( val<min || max<val)
                {
                    alert("Error!");
                    $(t).val($(t).data('oldValue'));
                }
        }); 
    });
    
  31. from https://stackoverflow.com/questions/469357/html-text-input-allow-only-numeric-input by cc-by-sa and MIT license