jQuery를 사용하여 HTML 입력 상자에 숫자 (0-9) 만 허용하는 방법은 무엇입니까?


901

(0,1,2,3,4,5 ... 9) 0-9와 같은 숫자 만 허용하려는 입력 텍스트 필드가있는 웹 페이지를 만들고 있습니다.

jQuery를 사용하여 어떻게 할 수 있습니까?


73
클라이언트 측 유효성 검사에 의존 할 수는 없습니다. 사용자가 JavaScript를 사용하지 않거나 JavaScript 호환 브라우저를 사용하지 않는 경우 서버에서도 유효성 검사를 수행해야합니다.
cjk

45
html5를 고려 했습니까? <입력 유형 = "번호"/>. 최소 및 최대 속성을 너무 입력을 제한 할 수 있습니다
ZX12R

5
키보드의 차이점과 그렇지 않은 점에서 훨씬 더 안정적이기 때문에 키 업 이벤트에서 입력 값을 확인하고 키 코드를 확인하지 않아야한다고 생각합니다.
Richard

13
본인은 Richard에 전적으로 동의합니다 . 키 코드를 사용 하지 마십시오 . 예를 들어, 키보드에서 숫자를 입력하려면 "Shift"를 눌러야하므로 허용되는 대답은 프랑스어 키보드에서 작동하지 않습니다. 키코 드는 너무 위험합니다. IMHO.
MiniQuark

3
@ ZX12R 현재 버전의 IE에서는 작동하지 않습니다. 최신 코드를 자신의 물건으로 사용하여 신선하게 유지하는 것이 좋지만 실제로는 거의 모든 전문 프로젝트에 대한 옵션이 아닙니다. caniuse.com/#feat=input-number
Eric

답변:


1260

참고 : 이것은 업데이트 된 답변입니다. 아래 주석은 키 코드로 엉망이 된 이전 버전을 나타냅니다.

jQuery

JSFiddle에서 직접 사용해보십시오 .

이를위한 기본 jQuery 구현은 없지만 <input>다음 inputFilter플러그인 을 사용하여 텍스트의 입력 값을 필터링 할 수 있습니다 (복사 + 붙여 넣기, 드래그 + 드롭, 키보드 단축키, 상황에 맞는 메뉴 작업, 입력 할 수없는 키, 캐럿 위치, 다른 키보드 레이아웃 및 IE 9 이후의 모든 브라우저 ) :

// Restricts input for the set of matched elements to the given inputFilter function.
(function($) {
  $.fn.inputFilter = function(inputFilter) {
    return this.on("input keydown keyup mousedown mouseup select contextmenu drop", 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 = "";
      }
    });
  };
}(jQuery));

이제 inputFilter플러그인을 사용하여 입력 필터를 설치할 수 있습니다 .

$(document).ready(function() {
  $("#myTextBox").inputFilter(function(value) {
    return /^\d*$/.test(value);    // Allow digits only, using a RegExp
  });
});

더 많은 입력 필터 예제 는 JSFiddle 데모 를 참조하십시오 . 또한 서버 측 유효성 검사를 수행해야합니다.

순수한 자바 스크립트 (jQuery 제외)

jQuery는 실제로 이것을 위해 필요하지 않습니다. 순수한 JavaScript로도 같은 일을 할 수 있습니다. 이 답변을 참조하십시오 .

HTML 5

HTML 5에는 다음과 같은 기본 솔루션이 있지만 ( 사양<input type="number"> 참조 ) 브라우저 지원은 다양합니다.

  • 대부분의 브라우저는 입력 할 때가 아니라 양식을 제출할 때만 입력의 유효성을 검사합니다.
  • 대부분의 모바일 브라우저는 지원하지 않습니다 step, minmax특성을.
  • 크롬 (버전 71.0.3578.98)는 여전히 사용자가 문자를 입력 할 수 있습니다 eE필드에. 이 질문 도 참조하십시오 .
  • Firefox (버전 64.0) 및 Edge (EdgeHTML 버전 17.17134) 를 사용하면 필드에 텍스트 를 입력 할 수 있습니다.

w3schools.com에서 직접 사용해보십시오 .


45
감사! event.keyCode == 46 || event.keyCode == 8 || event.keyCode == 190 소수를 원하면
Michael L Watson

9
txt 상자에서 왼쪽 및 오른쪽 화살표 탐색을 허용하려면 키 코드 37 및 39를 추가하십시오. if (event.keyCode == 46 || event.keyCode == 8 || event.keyCode == 37 || event.keyCode == 39)
Anthony Queen

22
오, 방금 테스터로부터 문제를 발견했습니다. 사용자가 Shift 키를 누르고 숫자 키를 누르지 않도록해야합니다. 그렇지 않으면 입력이! @ # $ % ^ & * ()를 허용합니다.
Allen Rice

6
shift + 버그를 확인했습니다. 또한 ALT + 숫자 패드는 거의 모든 것을 허용합니다 (예 : Alt + 321 = A, Alt + 322 = B 등). 서버 측 유효성 검사의 또 다른 사례입니다.
Anthony Queen

140
나는이 답변에 동의하지 않습니다 : 키보드 레이아웃이 무엇인지 확신 할 수 없기 때문에 키 코드를 사용하는 것은 너무 위험합니다. 예를 들어 프랑스어 키보드에서 숫자를 입력하려면 Shift 키를 눌러야합니다. 따라서이 코드는 전혀 작동하지 않습니다. 따라서이 키 코드 핵 대신 유효성 검사를 수행하십시오.
MiniQuark

182

내가 사용하는 기능은 다음과 같습니다.

// Numeric only control handler
jQuery.fn.ForceNumericOnly =
function()
{
    return this.each(function()
    {
        $(this).keydown(function(e)
        {
            var key = e.charCode || e.keyCode || 0;
            // allow backspace, tab, delete, enter, arrows, numbers and keypad numbers ONLY
            // home, end, period, and numpad decimal
            return (
                key == 8 || 
                key == 9 ||
                key == 13 ||
                key == 46 ||
                key == 110 ||
                key == 190 ||
                (key >= 35 && key <= 40) ||
                (key >= 48 && key <= 57) ||
                (key >= 96 && key <= 105));
        });
    });
};

그런 다음 다음을 수행하여 컨트롤에 연결할 수 있습니다.

$("#yourTextBoxName").ForceNumericOnly();

2
나는 이것이 유용하다는 것을 알았지 만 성가신 "버그"를 발견했다. iMac에서 이것을 사용하면 a 및 e와 같은 문자를 사용할 수 있습니다. PC의 키패드 숫자는 iMac의 문자이고 Mac 키보드는 일반 숫자와 같습니다. 누구나 Mac과 PC에서 모두 작동시키는 방법을 알고 있습니까?
Volmar

3
"홈"키, "끝"키가 작동하지 않습니다. 이것은 Peter가 제안한 더 나은 솔루션입니다 : west-wind.com/weblog/posts/2011/Apr/22/…
bman

return this.each(function() 있습니까?
powtac

2
@powtac-여러 객체에서 .ForceNumericOnly ()를 호출 할 수 있습니다. 예를 들어 ... $ ( "input [type = 'text']"). ForceNumericOnly ()
Oliver Pearmain

1
@powtac each로부터는 return this.each(function()HaggleLad로서 상기 다중 객체 수 있도록, 그리고 return일부가 같은 체인 있도록, 호출자 jQuery 오브젝트에 다시 반환한다$("input[type='text'").ForceNumericOnly().show()
호세 루이 산토스

149

인라인 :

<input name="number" onkeyup="if (/\D/g.test(this.value)) this.value = this.value.replace(/\D/g,'')">

눈에 거슬리지 않는 스타일 (jQuery 사용) :

$('input[name="number"]').keyup(function(e)
                                {
  if (/\D/g.test(this.value))
  {
    // Filter non-digits from input value.
    this.value = this.value.replace(/\D/g, '');
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input name="number">


2
사용자가 왼쪽 화살표 키를 눌러도 캐럿이 끝까지 이동합니다.
Phrogz 2012 년

1
@ phrogz, 이것을 시도하십시오 : onkeyup="if (/\D/g.test(this.value)) this.value = this.value.replace(/\D/g,'')".
Patrick Fisher

이것은 완벽하게 작동하며 위와 달리 Shift + 숫자를 방지합니다.
Nick Hartley

5
@ mhenry1384 예상되는 동작입니다. 나는 그것이 좋은 피드백이라고 생각하지만, 당신이 그것을 좋아하지 않는다면, 키 코드 접근법은 당신이 찾고있는 것일 것입니다.
Patrick Fisher

2
/[^0-9]|^0+(?!$)/g일련의 0을 방지 하도록 수정할 수 있습니다.
Johny Skovdal

105

간단한 JavaScript 정규식을 사용하여 순수한 숫자를 테스트 할 수 있습니다.

/^[0-9]+$/.test(input);

입력이 숫자이면 true를 반환하고 그렇지 않으면 false를 반환합니다.

또는 이벤트 키 코드의 경우 아래에서 간단하게 사용하십시오.

     // Allow: backspace, delete, tab, escape, enter, ctrl+A and .
    if ($.inArray(e.keyCode, [46, 8, 9, 27, 13, 110, 190]) !== -1 ||
         // Allow: Ctrl+A
        (e.keyCode == 65 && e.ctrlKey === true) || 
         // Allow: home, end, left, right
        (e.keyCode >= 35 && e.keyCode <= 39)) {
             // let it happen, don't do anything
             return;
    }

    var charValue = String.fromCharCode(e.keyCode)
        , valid = /^[0-9]+$/.test(charValue);

    if (!valid) {
        e.preventDefault();
    }

11
이 접근법의 구현에 대한 내 대답을 참조하십시오.
Patrick Fisher

정규 표현식을 확인하는 대신 숫자 키 누르기를 확인하는 데 프로세서 시간이 덜 걸리지 않습니까?
andrsnn

87

다음과 같이 입력 이벤트에 사용할 수 있습니다.

$(document).on("input", ".numeric", function() {
    this.value = this.value.replace(/\D/g,'');
});

그러나이 코드 특권은 무엇입니까?

  • 모바일 브라우저에서 작동합니다 (keydown 및 keyCode에 문제가 있음).
  • "on"을 사용하고 있기 때문에 AJAX 생성 컨텐츠에서도 작동합니다.
  • 붙여 넣기 이벤트와 같이 키 다운보다 성능이 향상되었습니다.

6
나는 이것이 받아 들인 대답보다 훨씬 강력하고 간단한 해결책이라고 생각합니다.
Jeremy Harris

replace (/ \ D / g, '')를 사용하면 더욱 간단 해집니다
Alfergon

안녕하세요, decimal사이 0.0에 있는 숫자 값을 어떻게 보장 24.0할 수 .
트랜스포머를

this.value = Number(this.value.replace(/\D/g, ''));
HasanG

좋은 대답, 클래스를 토글하여 입력이 숫자인지 여부를 쉽게 토글 할 수 있습니다
raklos

55

짧고 달콤합니다-30 회 이상의 답변 후에도 많은 관심을 끌지 못할지라도;)

  $('#number_only').bind('keyup paste', function(){
        this.value = this.value.replace(/[^0-9]/g, '');
  });

5
키업을 입력으로 대체합니다. 그렇지 않으면 문자를 누른 채 클릭하여 텍스트 상자에서 포커스를 가져 와서 텍스트를 그대로 둡니다. 입력 할 수 없음을 보장
WizLiz

정규식에 감사드립니다-그러나 이것은 좀 더 나은 이벤트 핸들러입니다. $ ( '# number_only'). on ( 'input propertychange', function () {this.value = this.value.replace (/ [^ 0-9] / g, '');});
BradM

3
참고-질문은 요청하지 않았지만 소수점을 허용하지 않습니다 (예 : 12.75). "keyup"이 아닌 "input"을 바인딩하면 캐릭터가 순간적으로보고 나서 제거하는 대신 부드러운 UX를 만들 수 있습니다.
Paul

44

를 사용하여 자바 스크립트가 작동 때는 isNaN을 ,

if (isNaN($('#inputid').val()))

if (isNaN (document.getElementById ( 'inputid'). val ())))

if (isNaN(document.getElementById('inputid').value))

업데이트 : 여기에 관한 좋은 기사이지만 jQuery 사용 : HTML 텍스트 상자의 입력을 숫자 값으로 제한


40
음 ... "JQuery를 사용하지 않는"JQuery를 사용하는 예제 부분을 제외하고 ...
GalacticCowboy

document.getElementById('inputid').val()친구 .. 그것은 여전히 ​​jquery입니다. .val()jquery 일입니다. 사용.value
mpen


안녕하세요, decimal사이 0.0에 있는 숫자 값을 어떻게 보장 24.0할 수 .
변압기

28
$(document).ready(function() {
    $("#txtboxToFilter").keydown(function(event) {
        // Allow only backspace and delete
        if ( event.keyCode == 46 || event.keyCode == 8 ) {
            // let it happen, don't do anything
        }
        else {
            // Ensure that it is a number and stop the keypress
            if (event.keyCode < 48 || event.keyCode > 57 ) {
                event.preventDefault(); 
            }   
        }
    });
});

출처 : http://snipt.net/GerryEng/jquery-making-textfield-only-accept-numeric-values


6
와우, 빈 "if"블록과 매직 넘버 둘 다! 방금 입에 조금 던졌습니다. : D 그러나 진지하게, 입력을 정규식 /^[.\d]+$/에 맞출 수있을 때 왜이 모든 문제를 해결해야합니까? 그리고 '8'은 무엇을 나타 냅니까?
Alan Moore

@ Alan : Haha, 나는 모른다-나는 소스에서 직접 복사했다. 대신 "if (event.keyCode! = 46 && event.keyCode! = 8)"를 쓰거나 정규식을 사용하십시오. 8이 삭제 키를 나타내는 것으로 가정합니다.
Ivar

4
예를 들어 Shift + 8을 눌러보십시오-유효성 검사는 * 들어
Anton

Shift 키 + 숫자 (! @ # $ % ^ ..와 같은 특수 문자)를 처리하는 경우 훨씬 좋습니다.
Shyju

27

내부 공통 js 파일에서 이것을 사용합니다. 이 동작이 필요한 입력에 클래스를 추가하기 만하면됩니다.

$(".numericOnly").keypress(function (e) {
    if (String.fromCharCode(e.keyCode).match(/[^0-9]/g)) return false;
});

1
멋지고 우아하고 유용한 코드! 감사. 그러나 키업 및 키 다운 이벤트를 추가해야합니다.
Silvio Delgado

25

나를 위해 더 간단한 것은

jQuery('.plan_eff').keyup(function () {     
  this.value = this.value.replace(/[^1-9\.]/g,'');
});

7
this.value.replace(/[^0-9\.]/g,'');OP의 요구 사항을 0-9로 포함 시키기 위해 반드시 사용해야 합니다
Chalise

24

왜 그렇게 복잡한가? HTML5 패턴 속성이 있으므로 jQuery가 필요하지 않습니다.

<input type="text" pattern="[0-9]*">

멋진 점은 휴대 장치에 숫자 키보드가 표시되어 jQuery를 사용하는 것보다 낫다는 것입니다.


2
투표권이 훨씬 더 많아야합니다. HTML5 이외의 브라우저에 대해서는 대체 정규식을 추가 할 수도 있지만 데이터 유효성 검사는 서버 측에서 처리해야합니다.
Markus

현재 대부분의 브라우저에서 지원되는 것처럼 보이므로 modernizr 지원은 그다지 중요하지 않습니다. caniuse.com/#search=pattern Safari는이 사이트에서 부분적으로 지원되는 것으로 나열되어 있어도 매우 잘 작동합니다. 시도 해봐!
손님

@guest 감사합니다. 가장 빠르고 쉬운 답변! 내 의견으로는 최고 답변.
BinaryJoe01

19

이 매우 간단한 솔루션을 사용하여 동일한 작업을 수행 할 수 있습니다

$("input.numbers").keypress(function(event) {
  return /\d/.test(String.fromCharCode(event.keyCode));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" class="numbers" name="field_name" />

솔루션에 대한 이 링크 를 참조했습니다 . 완벽하게 작동합니다 !!!


아마도 이것이 /\d|\./을 허용하는 것이 좋습니다. 십진수
Zango

이것은 crome에서 완벽하게 작동합니다. 하지만 모질라 파이어 폭스에서
Kirataka

안녕하세요, decimal사이 0.0에 있는 숫자 값을 어떻게 보장 24.0할 수 .
트랜스포머를

않는 복사 붙여 넣기하지 작업
MR ID를


14

HTML5의 패턴 속성은 요소 값이 확인되는 정규식을 지정합니다.

  <input  type="text" pattern="[0-9]{1,3}" value="" />

참고 : pattern 속성은 text, search, url, tel, email 및 password 입력 유형과 함께 작동합니다.

  • [0-9]는 임의의 정규식 조건으로 대체 될 수 있습니다.

  • {1,3}은 최소 1을 나타내고 최대 3 자리를 입력 할 수 있습니다.


안녕하세요, decimal사이 0.0에 있는 숫자 값을 어떻게 보장 24.0할 수 .
트랜스포머를

1
@transformer이 <input type = "number"pattern = "[0-9] + ([\.,] [0-9] +)?" step = "0.01">
vickisys

11

jQuery.validate를 사용하여 매우 간단한 것

$(document).ready(function() {
    $("#formID").validate({
        rules: {
            field_name: {
                numericOnly:true
            }
        }
    });
});

$.validator.addMethod('numericOnly', function (value) {
       return /^[0-9]+$/.test(value);
}, 'Please only enter numeric values (0-9)');

8

함수 suppressNonNumericInput (event) {

    if( !(event.keyCode == 8                                // backspace
        || event.keyCode == 46                              // delete
        || (event.keyCode >= 35 && event.keyCode <= 40)     // arrow keys/home/end
        || (event.keyCode >= 48 && event.keyCode <= 57)     // numbers on keyboard
        || (event.keyCode >= 96 && event.keyCode <= 105))   // number on keypad
        ) {
            event.preventDefault();     // Prevent character input
    }
}

안녕하세요, decimal사이 0.0에 있는 숫자 값을 어떻게 보장 24.0할 수 .
트랜스포머를

8

다른 솔루션과 달리 사용자가 텍스트를 선택하거나 붙여 넣기를 선택하지 못하게하는 매우 훌륭하고 간단한 솔루션을 찾았습니다. jQuery 스타일 :)

$("input.inputPhone").keyup(function() {
    var jThis=$(this);
    var notNumber=new RegExp("[^0-9]","g");
    var val=jThis.val();

    //Math before replacing to prevent losing keyboard selection 
    if(val.match(notNumber))
    { jThis.val(val.replace(notNumber,"")); }
}).keyup(); //Trigger on page load to sanitize values set by server

이봐, 나는 이것을 사용하고 있지만 내가 정말로 찾고있는 것은 그처럼 1.2 또는 3.455 같은 점을 허용하는 것입니다
Vivekh

8

이 JavaScript 함수를 사용할 수 있습니다 :

function maskInput(e) {
    //check if we have "e" or "window.event" and use them as "event"
        //Firefox doesn't have window.event 
    var event = e || window.event 

    var key_code = event.keyCode;
    var oElement = e ? e.target : window.event.srcElement;
    if (!event.shiftKey && !event.ctrlKey && !event.altKey) {
        if ((key_code > 47 && key_code < 58) ||
            (key_code > 95 && key_code < 106)) {

            if (key_code > 95)
                 key_code -= (95-47);
            oElement.value = oElement.value;
        } else if(key_code == 8) {
            oElement.value = oElement.value;
        } else if(key_code != 9) {
            event.returnValue = false;
        }
    }
}

다음과 같이 텍스트 상자에 바인딩 할 수 있습니다.

$(document).ready(function() {
    $('#myTextbox').keydown(maskInput);
});

위의 내용은 프로덕션 환경에서 사용되며 완벽하게 작동하며 브라우저 간입니다. 또한 jQuery에 의존하지 않으므로 인라인 JavaScript로 텍스트 상자에 바인딩 할 수 있습니다.

<input type="text" name="aNumberField" onkeydown="javascript:maskInput()"/>

누군가 숫자가 아닌 텍스트를 입력에 붙여 넣을 때 실패합니다. 우리가 이것을 극복 할 수있는 방법이 있습니까? 내 마음을 감쌀 수 없습니다.
Kiran Ruth R

7

나는 그것이 모든 사람을 도울 것이라고 생각

  $('input.valid-number').bind('keypress', function(e) { 
return ( e.which!=8 && e.which!=0 && (e.which<48 || e.which>57)) ? false : true ;
  })

키패드 입력을 잊어 버렸습니다. 여기에는 것이라고 :if(event.which!=8 && event.which!=0 && (event.which<48 || event.which>57) && (event.which<96 || event.which>105)) return;
tomvo

6

위의 @ user261922의 게시물을 기반으로 내 글을 썼습니다. 모두 수정되어 모든 탭을 선택하고 동일한 페이지에서 여러 "숫자 만"필드를 처리 할 수 ​​있습니다.

var prevKey = -1, prevControl = '';
$(document).ready(function () {
    $(".OnlyNumbers").keydown(function (event) {
        if (!(event.keyCode == 8                                // backspace
            || event.keyCode == 9                               // tab
            || event.keyCode == 17                              // ctrl
            || event.keyCode == 46                              // delete
            || (event.keyCode >= 35 && event.keyCode <= 40)     // arrow keys/home/end
            || (event.keyCode >= 48 && event.keyCode <= 57)     // numbers on keyboard
            || (event.keyCode >= 96 && event.keyCode <= 105)    // number on keypad
            || (event.keyCode == 65 && prevKey == 17 && prevControl == event.currentTarget.id))          // ctrl + a, on same control
        ) {
            event.preventDefault();     // Prevent character input
        }
        else {
            prevKey = event.keyCode;
            prevControl = event.currentTarget.id;
        }
    });
});

6

얼마 전에 내가 만든 빠른 솔루션이 있습니다. 내 기사에서 더 자세히 읽을 수 있습니다.

http://ajax911.com/numbers-numeric-field-jquery/

$("#textfield").bind("keyup paste", function(){
    setTimeout(jQuery.proxy(function() {
        this.val(this.val().replace(/[^0-9]/g, ''));
    }, $(this)), 0);
});

6

탭을 허용하려고합니다.

$("#txtboxToFilter").keydown(function(event) {
    // Allow only backspace and delete
    if ( event.keyCode == 46 || event.keyCode == 8 || event.keyCode == 9 ) {
        // let it happen, don't do anything
    }
    else {
        // Ensure that it is a number and stop the keypress
        if ((event.keyCode < 48 || event.keyCode > 57) && (event.keyCode < 96 || event.keyCode > 105 )) {
            event.preventDefault(); 
        }   
    }
});

6

다음은 jQuery UI 위젯 팩토리를 사용하는 답변입니다. 허용되는 문자를 사용자 정의 할 수 있습니다.

$('input').numberOnly({
    valid: "0123456789+-.$,"
});

그것은 숫자, 숫자 기호 및 달러 금액을 허용합니다.

$.widget('themex.numberOnly', {
    options: {
        valid : "0123456789",
        allow : [46,8,9,27,13,35,39],
        ctrl : [65],
        alt : [],
        extra : []
    },
    _create: function() {
        var self = this;

        self.element.keypress(function(event){
            if(self._codeInArray(event,self.options.allow) || self._codeInArray(event,self.options.extra))
            {
                return;
            }
            if(event.ctrlKey && self._codeInArray(event,self.options.ctrl))
            {
                return;
            }
            if(event.altKey && self._codeInArray(event,self.options.alt))
            {
                return;
            }
            if(!event.shiftKey && !event.altKey && !event.ctrlKey)
            {
                if(self.options.valid.indexOf(String.fromCharCode(event.keyCode)) != -1)
                {
                    return;
                }
            }
            event.preventDefault(); 
        });
    },

    _codeInArray : function(event,codes) {
        for(code in codes)
        {
            if(event.keyCode == codes[code])
            {
                return true;
            }
        }
        return false;
    }
});

이렇게하면 $와 +-가 첫 번째 또는 첫 번째 / 두 번째 문자와 1 개의 소수점 만 보장합니까?
gordon

6

이것은 깨지지 않는 것 같습니다.

// Prevent NULL input and replace text.
$(document).on('change', 'input[type="number"]', function (event) {
    this.value = this.value.replace(/[^0-9\.]+/g, '');
    if (this.value < 1) this.value = 0;
});

// Block non-numeric chars.
$(document).on('keypress', 'input[type="number"]', function (event) {
    return (((event.which > 47) && (event.which < 58)) || (event.which == 13));
});

5

숫자 키패드와 탭 키가 작동하는지 확인해야합니다.

 // Allow only backspace and delete
            if (event.keyCode == 46 || event.keyCode == 8  || event.keyCode == 9) {
                // let it happen, don't do anything
            }
            else {
                // Ensure that it is a number and stop the keypress
                if ((event.keyCode >= 48 && event.keyCode <= 57) || (event.keyCode >= 96 && event.keyCode <= 105)) {

                }
                else {
                    event.preventDefault();
                }
            }

5

나는 조금 도와주고 싶었고, 내 버전, onlyNumbers기능을 만들었습니다 ...

function onlyNumbers(e){
    var keynum;
    var keychar;

    if(window.event){  //IE
        keynum = e.keyCode;
    }
    if(e.which){ //Netscape/Firefox/Opera
        keynum = e.which;
    }
    if((keynum == 8 || keynum == 9 || keynum == 46 || (keynum >= 35 && keynum <= 40) ||
       (event.keyCode >= 96 && event.keyCode <= 105)))return true;

    if(keynum == 110 || keynum == 190){
        var checkdot=document.getElementById('price').value;
        var i=0;
        for(i=0;i<checkdot.length;i++){
            if(checkdot[i]=='.')return false;
        }
        if(checkdot.length==0)document.getElementById('price').value='0';
        return true;
    }
    keychar = String.fromCharCode(keynum);

    return !isNaN(keychar);
}

입력 태그 "... input ... id ="price "onkeydown ="return onlyNumbers (event) "..."에 추가하면됩니다.;)


5

나는 또한 대답하고 싶다 :)

    $('.justNum').keydown(function(event){
        var kc, num, rt = false;
        kc = event.keyCode;
        if(kc == 8 || ((kc > 47 && kc < 58) || (kc > 95 && kc < 106))) rt = true;
        return rt;
    })
    .bind('blur', function(){
        num = parseInt($(this).val());
        num = isNaN(num) ? '' : num;
        if(num && num < 0) num = num*-1;
        $(this).val(num);
    });

그게 다야 .. 그냥 숫자 야. :) 거의 '흐림'만으로도 작동 할 수 있지만 ...


5

입력 값이 숫자인지 확인하는 간단한 방법은 다음과 같습니다.

var checknumber = $('#textbox_id').val();

    if(jQuery.isNumeric(checknumber) == false){
        alert('Please enter numeric value');
        $('#special_price').focus();
        return;
    }

5

Jquery 에서이 방법을 적용하기 만하면 숫자 만 허용하도록 텍스트 상자의 유효성을 검사 할 수 있습니다.

function IsNumberKeyWithoutDecimal(element) {    
var value = $(element).val();
var regExp = "^\\d+$";
return value.match(regExp); 
}

이 솔루션을 여기에서 시도 하십시오


5

HTML5 숫자 입력을 시도 할 수 있습니다.

<input type="number" placeholder="enter the number" min="0" max="9">

이 입력 태그 요소는 min 속성이 0으로 설정되고 max 속성이 9로 설정 될 때 0에서 9 사이의 값만 갖습니다.

자세한 정보는 http://www.w3schools.com/html/html_form_input_types.asp 를 방문하십시오 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.