Come consentire solo numeri (0-9) nella casella di input HTML usando jQuery?


901

Sto creando una pagina Web in cui ho un campo di testo di input in cui voglio consentire solo caratteri numerici come (0,1,2,3,4,5 ... 9) 0-9.

Come posso fare questo usando jQuery?


73
Tieni presente che non puoi fare affidamento sulla convalida sul lato client: devi anche convalidare sul server nel caso in cui l'utente abbia JavaScript disattivato o non stia utilizzando un browser compatibile con JavaScript.
cjk

45
hai considerato HTML5? <input type = "number" />. con gli attributi min e max puoi limitare anche l'input
ZX12R

5
Penso che dovresti controllare i valori di input sull'evento keyup e non verificare i codici chiave, perché è molto più affidabile tra le differenze nelle tastiere e cosa no.
Richard,

13
Sono pienamente d'accordo con Richard: non usare i codici chiave. La risposta accettata non funziona sulle tastiere francesi, ad esempio, poiché è necessario premere "Maiusc" per digitare i numeri su quelle tastiere. I codici chiave sono troppo rischiosi, IMHO.
MiniQuark,

3
@ ZX12R Non funziona con nessuna versione corrente di IE. Va bene e va bene usare l'ultimo codice sulle tue cose per rimanere aggiornato, ma questa non è davvero un'opzione per quasi tutti i progetti professionali. caniuse.com/#feat=input-number
Eric

Risposte:


1260

Nota: questa è una risposta aggiornata. I commenti di seguito si riferiscono a una versione precedente che si è comportata in modo scorretto con i codici chiave.

jQuery

Provalo tu stesso su JSFiddle .

Non esiste un'implementazione nativa di jQuery per questo, ma puoi filtrare i valori di input di un testo <input>con il seguente inputFilterplugin (supporta Copia + Incolla, Trascina + Rilascia, scorciatoie da tastiera, operazioni del menu contestuale, tasti non tipizzabili, posizione del cursore, diverse layout di tastiera e tutti i browser dall'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));

Ora puoi usare il inputFilterplugin per installare un filtro di input:

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

Vedi la demo di JSFiddle per altri esempi di filtri di input. Si noti inoltre che è ancora necessario eseguire la convalida lato server!

JavaScript puro (senza jQuery)

jQuery non è effettivamente necessario per questo, puoi fare la stessa cosa anche con JavaScript puro. Vedere questa risposta .

HTML 5

HTML 5 ha una soluzione nativa con <input type="number">(vedi le specifiche ), ma nota che il supporto del browser varia:

  • La maggior parte dei browser convalida l'input solo quando si invia il modulo e non durante la digitazione.
  • La maggior parte dei browser per dispositivi mobili non supportano i step, mine maxattributi.
  • Chrome (versione 71.0.3578.98) consente comunque all'utente di inserire i caratteri ee Enel campo. Vedi anche questa domanda .
  • Firefox (versione 64.0) e Edge (EdgeHTML versione 17.17134) consentono ancora all'utente di immettere qualsiasi testo nel campo.

Provalo tu stesso su w3schools.com .


45
Grazie! event.keyCode == 46 || event.keyCode == 8 || event.keyCode == 190 se vuoi decimali
Michael L Watson,

9
Aggiungi keyCode 37 e 39 per consentire la navigazione della freccia sinistra e destra nella casella txt, ad esempio: if (event.keyCode == 46 || event.keyCode == 8 || event.keyCode == 37 || event.keyCode == 39)
Anthony Queen,

22
ooo, ho appena riscontrato un problema per questo dai nostri tester. Devi impedire all'utente di tenere premuto MAIUSC e di premere i tasti numerici, altrimenti l'ingresso consentirà! @ # $% ^ & * ()
Allen Rice

6
Confermato il turno + bug. Inoltre, ALT + tastierino numerico consente praticamente qualsiasi cosa (ovvero Alt + 321 = A, Alt + 322 = B, ecc ...). Un altro caso per la convalida lato server.
Anthony Queen,

140
Non sono davvero d'accordo con questa risposta: giocare con i codici chiave è davvero troppo rischioso, perché non si può essere sicuri del layout della tastiera. Ad esempio, sulle tastiere francesi, gli utenti devono premere MAIUSC per digitare i numeri. Quindi questo codice non funzionerà affatto. Quindi, per favore, vai per la convalida invece di questo hack del codice chiave.
MiniQuark,

182

Ecco la funzione che uso:

// 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));
        });
    });
};

Puoi quindi collegarlo al tuo controllo facendo:

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

2
l'ho trovato utile, ma ho trovato un "bug" anoying. quando lo uso sul mio iMac, consente alcune lettere, come a ed e. sembra che i numeri della tastiera sul pc siano lettere sull'iMac e che la tastiera del Mac sia uguale ai numeri normali. qualcuno sa come farlo funzionare su Mac e PC?
Volmar,

3
Anche i tasti "Home", "End" non funzionano. Questa è una soluzione migliore che Peter ha suggerito: west-wind.com/weblog/posts/2011/Apr/22/…
bman

Perché c'è un return this.each(function() ?
powtac,

2
@powtac - così puoi chiamare .ForceNumericOnly () su più oggetti. Ad esempio ... $ ("input [type = 'text']"). ForceNumericOnly ()
Oliver Pearmain

1
@powtac il eachfrom return this.each(function()è quello di consentire più oggetti come ha detto HaggleLad, e la returnparte è di restituire l'oggetto jQuery al chiamante, per consentire il concatenamento come$("input[type='text'").ForceNumericOnly().show()
Jose Rui Santos,

149

In linea:

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

Stile discreto (con 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
Questo sposta il cursore fino alla fine anche se l'utente sta premendo il tasto freccia sinistra.
Phrogz,

1
@phrogz, provate questo: onkeyup="if (/\D/g.test(this.value)) this.value = this.value.replace(/\D/g,'')".
Patrick Fisher

Funziona perfettamente e impedisce Shift + numero a differenza di quelli sopra.
Nick Hartley,

5
@ mhenry1384 Questo è il comportamento previsto. Trovo che sia un buon feedback, ma se non ti piace, un approccio al codice chiave sarebbe quello che stai cercando.
Patrick Fisher,

2
È possibile modificare per /[^0-9]|^0+(?!$)/gimpedire serie iniziali di zero.
Johny Skovdal,

105

Puoi semplicemente usare una semplice espressione regolare JavaScript per testare caratteri puramente numerici:

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

Ciò restituisce true se l'input è numerico o false in caso contrario.

o per il codice chiave dell'evento, utilizzare semplicemente di seguito:

     // 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
Vedi la mia risposta per un'implementazione di questo approccio.
Patrick Fisher,

non ci vorrebbe meno tempo del processore per verificare la pressione di un tasto numerico invece di controllare un'espressione regolare?
andrsnn,

87

È possibile utilizzare un evento di input come questo:

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

Ma cos'è questo privilegio di codice?

  • Funziona su browser mobili (keydown e keyCode hanno problemi).
  • Funziona anche con i contenuti generati da AJAX, perché stiamo usando "on".
  • Prestazioni migliori rispetto al keydown, ad esempio sull'evento incolla.

6
Sento che questa è una soluzione molto più solida (e più semplice) della risposta accettata.
Jeremy Harris,

Ancora più semplice se si utilizza sostituire (/ \ D / g, '')
Alfergon

hi, come posso garantire valore numerico con una decimaltra 0.0di 24.0non sono in grado di lasciar entrare nel.
trasformatore

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

Buona risposta, consente di alternare facilmente se un input è numerico o meno attivando la classe
raklos

55

Breve e dolce - anche se questo non troverà mai molta attenzione dopo oltre 30 risposte;)

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

5
Sostituirei la digitazione per input, altrimenti puoi mantenere una lettera premuta, quindi fare clic per togliere lo stato attivo dalla casella di testo e lasciare il testo così com'è. input assicurano che ciò non può accadere
WizLiz

Grazie per il regex - ma questo è un gestore di eventi leggermente migliore: $ ('# number_only'). On ('input propertychange', function () {this.value = this.value.replace (/ [^ 0-9] / g, '');});
BradM,

3
Cordiali saluti - La domanda non è stata posta, ma ciò non consente i decimali (ad es. 12.75). Associare "input" anziché "keyup" rende una UX più fluida invece di vedere il loro carattere per una frazione di secondo, quindi rimuoverlo.
Paolo,

44

Usa la funzione JavaScript isNaN ,

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

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

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

Aggiornamento: E qui un bell'articolo che ne parla ma usando jQuery: Limitare l'input nelle caselle di testo HTML a valori numerici


40
Bene ... "Non usare JQuery" ad eccezione della parte del tuo esempio che utilizza JQuery ...
GalacticCowboy,

document.getElementById('inputid').val()amico .. è ancora jquery. .val()è una cosa jquery. utilizzare.value
mpen


hi, come posso garantire valore numerico con una decimaltra 0.0di 24.0non sono in grado di lasciar entrare nel.
trasformatore

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(); 
            }   
        }
    });
});

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


6
Wow, svuota i blocchi "if" e i numeri magici entrambi! Ho appena vomitato in bocca un po '. : D Ma seriamente, perché andare a tutti questi problemi quando potresti semplicemente confrontare l'input con regex /^[.\d[+$/? E cosa rappresenta l'8?
Alan Moore,

@Alan: Haha, non ne ho idea - l'ho copiato direttamente dalla fonte. Scriverei invece "if (event.keyCode! = 46 && event.keyCode! = 8)" o userei regex come hai detto. Suppongo che l'8 rappresenti la chiave di eliminazione.
Ivar,

4
Prova a premere Shift + 8 per esempio - la tua validazione consentirà * di entrare
Anton

Questo è bello Sarebbe molto meglio, se gestisce il tasto Maiusc + numeri (caratteri speciali come! @ # $% ^ ..)
Shyju

27

Lo uso nel nostro file js comune interno. Aggiungo solo la classe a qualsiasi input che abbia bisogno di questo comportamento.

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

1
Codice bello, elegante e utile! Grazie. Ma devi aggiungere eventi keyup e keydown.
Silvio Delgado,

25

Uno più semplice per me è

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

7
Devi solo assicurarti this.value.replace(/[^0-9\.]/g,'');di includere i requisiti di OP di 0-9
Chalise

24

Perché così complicato? Non hai nemmeno bisogno di jQuery perché c'è un attributo pattern HTML5:

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

La cosa interessante è che visualizza una tastiera numerica sui dispositivi mobili, il che è molto meglio dell'uso di jQuery.


2
Questo dovrebbe avere molti più voti. Semmai, potresti anche aggiungere una regex di fallback per browser non html5, ma la convalida dei dati dovrebbe essere gestita comunque sul lato server.
Markus,

sembra che ormai sia ben supportato dalla maggior parte dei browser, quindi il supporto di modernizr non è così importante: caniuse.com/#search=pattern Safari funziona molto bene anche se è elencato come parzialmente supportato su questo sito. Provalo!
ospite

@guest Grazie mille per questo. Risposta più semplice e veloce! Migliore risposta secondo me.
BinaryJoe01

19

Puoi fare lo stesso usando questa soluzione molto semplice

$("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" />

Ho fatto riferimento a questo link per la soluzione. Funziona perfettamente !!!


Forse è meglio /\d|\./ consentire. numeri decimali
Zango

Funziona perfettamente con crome. Ma non in Mozilla FireFox
Kirataka,

hi, come posso garantire valore numerico con una decimaltra 0.0di 24.0non sono in grado di lasciar entrare nel.
trasformatore

non funziona con copia incolla
mrid


14

L'attributo pattern in HTML5 specifica un'espressione regolare con cui viene verificato il valore dell'elemento.

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

Nota: l'attributo modello funziona con i seguenti tipi di input: testo, ricerca, url, tel, e-mail e password.

  • [0-9] può essere sostituito con qualsiasi condizione di espressione regolare.

  • {1,3} rappresenta un minimo di 1 e un massimo di 3 cifre può essere inserito.


hi, come posso garantire valore numerico con una decimaltra 0.0di 24.0non sono in grado di lasciar entrare nel.
trasformatore

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

11

Qualcosa di abbastanza semplice usando 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

function 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
    }
}

hi, come posso garantire valore numerico con una decimaltra 0.0di 24.0non sono in grado di lasciar entrare nel.
trasformatore

8

Sono arrivato a una soluzione molto buona e semplice che non impedisce all'utente di selezionare testo o copia e incolla come fanno altre soluzioni. stile 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

Ehi, lo sto usando, ma quello che cerco davvero è di permettergli di puntare come 1.2 o 3.455 in quel modo
Vivekh,

8

È possibile utilizzare questa funzione 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;
        }
    }
}

E puoi associarlo alla tua casella di testo in questo modo:

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

Uso quanto sopra in produzione e funziona perfettamente ed è cross-browser. Inoltre, non dipende da jQuery, quindi puoi collegarlo alla tua casella di testo con JavaScript incorporato:

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

Questo non riesce quando qualcuno incolla testo non numerico nell'input. Qualche idea su come potremmo superare questo? Non posso pensarci su questo.
Kiran Ruth R

7

Penso che aiuterà tutti

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

stai dimenticando l'immissione da tastiera. Ciò include che:if(event.which!=8 && event.which!=0 && (event.which<48 || event.which>57) && (event.which<96 || event.which>105)) return;
Tomvo,

6

Ho scritto il mio sulla base del post di @ user261922 sopra, leggermente modificato in modo da poter selezionare tutto, scheda e gestire più campi "solo numero" sulla stessa pagina.

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

Ecco una rapida soluzione che ho creato qualche tempo fa. puoi leggere di più a riguardo nel mio articolo:

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

Si desidera consentire la scheda:

$("#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

Ecco una risposta che utilizza jQuery UI Widget factory. Puoi personalizzare facilmente quali personaggi sono ammessi.

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

Ciò consentirebbe numeri, segni numerici e importi in dollari.

$.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;
    }
});

questo assicura $ e poi + - come primo o primo / secondo carattere e quindi solo 1 punto decimale?
Gordon,

6

Questo sembra infrangibile.

// 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

È necessario assicurarsi di disporre anche del tastierino numerico e del tasto Tab

 // 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

Volevo aiutare un po 'e ho realizzato la mia versione, la onlyNumbersfunzione ...

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);
}

Aggiungi semplicemente il tag di input "... input ... id =" price "onkeydown =" return onlyNumbers (event) "..." e hai finito;)


5

Vorrei anche rispondere :)

    $('.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);
    });

Questo è tutto ... solo numeri. :) Quasi può funzionare solo con la 'sfocatura', ma ...


5

Il modo semplice per verificare che il valore di immissione sia numerico è:

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

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

5

Ho solo bisogno di applicare questo metodo in Jquery e puoi validare la tua casella di testo per accettare solo il numero.

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

Prova questa soluzione qui


5

Puoi provare a inserire il numero HTML5:

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

Questo elemento tag di input ora avrebbe valore solo tra 0 e 9 poiché l'attributo min è impostato su 0 e l'attributo max è impostato su 9.

per ulteriori informazioni, visitare http://www.w3schools.com/html/html_form_input_types.asp

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.