jQuery: Quelle est la meilleure façon de restreindre "nombre"-entrée seulement pour les boîtes de texte? (permet des points décimaux)

Quelle est la meilleure façon de restreindre "nombre"-entrée seulement pour les boîtes de texte?

je cherche quelque chose qui autorise les points décimaux.

je vois beaucoup d'exemples. Mais il reste à décider lequel utiliser.

mise à jour de Praveen Jeganathan

plus de plugins, jQuery a implémenté son propre jQuery.isNumeric () ajouté en v1.7. Voir: https://stackoverflow.com/a/20186188/66767

222
demandé sur Community 2009-05-21 11:04:48

30 réponses

j'ai implémenté avec succès de nombreux formulaires avec le plugin jquery.numeric .

$(document).ready(function(){
    $(".numeric").numeric();
});

de plus cela fonctionne avec des textareas aussi!

EDIT: - avec un support plus large pour les nouveaux standards HTML, nous pouvons utiliser l'attribut pattern et le type number pour les éléments input pour restreindre le nombre seulement entrée. Il fonctionne pour restreindre le collage du contenu non numérique aussi bien. Plus d'informations sur number et d'autres types d'entrées plus récents est disponible ici .

189
répondu TheVillageIdiot 2017-09-02 14:25:01

si vous voulez restreindre l'entrée (par opposition à la validation), vous pouvez travailler avec les événements clés. quelque chose comme ceci:

<input type="text" class="numbersOnly" value="" />

et:

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

cela permet immédiatement à l'utilisateur de savoir qu'il ne peut pas entrer de caractères alpha, etc. plutôt que plus tard au cours de la phase de validation.

vous voudrez toujours valider parce que l'entrée peut être remplie en coupant et collant avec la souris ou éventuellement par un formulaire d'autocomplétion qui peut ne pas déclencher les événements clés.

278
répondu Keith Bentrup 2010-03-06 15:48:50

j'ai pensé que la meilleure réponse était celle-ci.

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

mais je suis d'accord qu'il est un peu d'une douleur que les touches fléchées et supprimer le bouton claquer curseur à la fin de la chaîne ( et à cause de cela, il a été donné un coup de pied en arrière à moi dans les essais)

j'ai ajouté dans un simple changement

$('.numbersOnly').keyup(function () {
    if (this.value != this.value.replace(/[^0-9\.]/g, '')) {
       this.value = this.value.replace(/[^0-9\.]/g, '');
    }
});

de cette façon s'il y a n'importe quel bouton appuyé qui ne va pas provoquer le texte à changer juste l'ignorer. Avec cela, vous pouvez frapper des flèches et supprimer sans sauter à la fin, mais il efface tout texte non numérique.

100
répondu James Nelli 2012-08-09 18:53:41

Le jquery.plugin numérique a quelques bugs que j'ai notifié à l'auteur. Il permet de multiples points décimaux dans Safari et Opera, et vous ne pouvez pas taper backspace, touches fléchées, ou plusieurs autres caractères de contrôle dans Opera. J'avais besoin d'une entrée de nombre entier positif donc j'ai fini par écrire le mien à la fin.

$(".numeric").keypress(function(event) {
  // Backspace, tab, enter, end, home, left, right
  // We don't support the del key in Opera because del == . == 46.
  var controlKeys = [8, 9, 13, 35, 36, 37, 39];
  // IE doesn't support indexOf
  var isControlKey = controlKeys.join(",").match(new RegExp(event.which));
  // Some browsers just don't raise events for control keys. Easy.
  // e.g. Safari backspace.
  if (!event.which || // Control keys in most browsers. e.g. Firefox tab is 0
      (49 <= event.which && event.which <= 57) || // Always 1 through 9
      (48 == event.which && $(this).attr("value")) || // No 0 first digit
      isControlKey) { // Opera assigns values for control keys.
    return;
  } else {
    event.preventDefault();
  }
});
53
répondu Dave Aaron Smith 2010-02-09 21:59:28

plus de plugins, jQuery a mis en œuvre ses propres jQuery.isNumeric () ajouté en v1.7.

jQuery.isNumeric( value )

détermine si son argument est unumber.

Échantillons des résultats

$.isNumeric( "-10" );     // true
$.isNumeric( 16 );        // true
$.isNumeric( 0xFF );      // true
$.isNumeric( "0xFF" );    // true
$.isNumeric( "8e5" );     // true (exponential notation string)
$.isNumeric( 3.1415 );    // true
$.isNumeric( +10 );       // true
$.isNumeric( 0144 );      // true (octal integer literal)
$.isNumeric( "" );        // false
$.isNumeric({});          // false (empty object)
$.isNumeric( NaN );       // false
$.isNumeric( null );      // false
$.isNumeric( true );      // false
$.isNumeric( Infinity );  // false
$.isNumeric( undefined ); // false

voici un exemple de comment lier l'isNumeric () dans avec l'auditeur de l'événement

$(document).on('keyup', '.numeric-only', function(event) {
   var v = this.value;
   if($.isNumeric(v) === false) {
        //chop off the last char entered
        this.value = this.value.slice(0,-1);
   }
});
46
répondu Praveen 2015-03-26 11:51:21

le plugin numérique() mentionné ci-dessus, ne fonctionne pas dans Opera (vous ne pouvez pas backspace, supprimer ou même utiliser les touches Back ou forward).

le code ci-dessous en JQuery ou Javascript fonctionnera parfaitement (et ce n'est que deux lignes).

JQuery:

$(document).ready(function() {
    $('.key-numeric').keypress(function(e) {
            var verified = (e.which == 8 || e.which == undefined || e.which == 0) ? null : String.fromCharCode(e.which).match(/[^0-9]/);
            if (verified) {e.preventDefault();}
    });
});

Javascript:

function isNumeric(e)
{
    var keynum = (!window.event) ? e.which : e.keyCode;
    return !((keynum == 8 || keynum == undefined || e.which == 0) ? null : String.fromCharCode(keynum).match(/[^0-9]/));
}

bien sûr, il s'agit d'entrée purement numérique (plus backspace, supprimer, touches forward/back) seulement, mais peut facilement être modifié pour inclure des points et des caractères en moins.

34
répondu Mike Gibbs 2013-09-10 12:35:48

vous pouvez utiliser le validation plugin avec son nombre () méthode.

$("#myform").validate({
  rules: {
    field: {
      required: true,
      number: true
    }
  }
});
25
répondu Dror 2009-05-21 07:14:38

pas besoin pour le code long pour la restriction d'entrée de nombre juste essayer ce code.

il accepte également valide int & float les deux valeurs.

Approche Javascript

onload =function(){ 
  var ele = document.querySelectorAll('.number-only')[0];
  ele.onkeypress = function(e) {
     if(isNaN(this.value+""+String.fromCharCode(e.charCode)))
        return false;
  }
  ele.onpaste = function(e){
     e.preventDefault();
  }
}
<p> Input box that accepts only valid int and float values.</p>
<input class="number-only" type=text />

jQuery Approach

$(function(){

  $('.number-only').keypress(function(e) {
	if(isNaN(this.value+""+String.fromCharCode(e.charCode))) return false;
  })
  .on("cut copy paste",function(e){
	e.preventDefault();
  });

});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p> Input box that accepts only valid int and float values.</p>
<input class="number-only" type=text />

mise à JOUR

les réponses ci - dessus sont pour la plupart des cas d'utilisation-validation entrée comme un nombre.

Mais ci - dessous est l'extrait de code pour les cas d'Utilisation spéciale

  • Permettant de nombres négatifs
  • montrant la touche invalide avant de l'enlever.

$(function(){
      
  $('.number-only').keyup(function(e) {
        if(this.value!='-')
          while(isNaN(this.value))
            this.value = this.value.split('').reverse().join('').replace(/[\D]/i,'')
                                   .split('').reverse().join('');
    })
    .on("cut copy paste",function(e){
    	e.preventDefault();
    });

});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p> Input box that accepts only valid int and float values.</p>
<input class="number-only" type=text />
17
répondu vinayakj 2015-06-20 14:35:11

ci-dessous est ce que j'utilise pour bloquer littéralement les touches. Cela permet seulement des nombres 0-9 et un point décimal. Facile à mettre en œuvre, pas beaucoup de code, et fonctionne comme un charme:

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

<input value="" onkeypress="return isNumberKey(event)">
14
répondu kaleazy 2012-10-26 10:15:15

comme une légère amélioration à cette suggestion , vous pouvez utiliser le plugin de Validation avec son nombre () , chiffres , et gamme méthodes. Par exemple, ce qui suit garantit que vous obtenez un entier positif entre 0 et 50:

$("#myform").validate({
  rules: {
    field: {
      required: true,
      number: true,
      digits: true,
      range : [0, 50]
    }
  }
});
11
répondu Brad Parks 2017-05-23 11:33:24

vous ne voyez pas d'alphabets apparence magique et disparition sur key down. Cela fonctionne sur la pâte de souris aussi.

$('#txtInt').bind('input propertychange', function () {
    $(this).val($(this).val().replace(/[^0-9]/g, ''));
});
9
répondu Null Head 2013-05-15 22:51:45

j'ai d'abord essayé de résoudre cela en utilisant jQuery, mais je n'étais pas heureux que des caractères indésirables (non-chiffres) apparaissent réellement dans le champ d'entrée juste avant d'être retiré sur keyup.

à la recherche d'autres solutions j'ai trouvé ceci:

entiers (non négatifs)

<script>
  function numbersOnly(oToCheckField, oKeyEvent) {
    return oKeyEvent.charCode === 0 ||
        /\d/.test(String.fromCharCode(oKeyEvent.charCode));
  }
</script>

<form name="myForm">
<p>Enter numbers only: <input type="text" name="myInput" 
    onkeypress="return numbersOnly(this, event);" 
    onpaste="return false;" /></p>
</form>

Source: https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onkeypress#Example Live exemple: http://jsfiddle.net/u8sZq/

décimal points (non-négatif)

pour permettre un seul point décimal, vous pourriez faire quelque chose comme ceci:

<script>
  function numbersOnly(oToCheckField, oKeyEvent) {        
    var s = String.fromCharCode(oKeyEvent.charCode);
    var containsDecimalPoint = /\./.test(oToCheckField.value);
    return oKeyEvent.charCode === 0 || /\d/.test(s) || 
        /\./.test(s) && !containsDecimalPoint;
  }
</script>

Source: Juste écrit ce. Semble être au travail. Exemple en direct: http://jsfiddle.net/tjBsF/

autres personnalisations

  • pour permettre plus de symboles à taper, il suffit d'ajouter ceux de l'expression régulière qui agit comme filtre de base du code char.
  • pour mettre en œuvre des restrictions contextuelles simples, regardez le contenu actuel (État) du champ d'entrée (oToCheckField.valeur)

certaines choses qui pourraient vous intéresser:

  • un seul point décimal autorisé
  • autoriser le signe moins seulement si placé au début de la chaîne. Cela permettrait pour les nombres négatifs.

lacunes

  • la position caret n'est pas disponible à l'intérieur de la fonction. Cela a grandement réduit les restrictions contextuelles que vous pouvez mettre en œuvre (par exemple, pas deux symboles consécutifs égaux). Pas sûr de ce que la meilleure façon d'accéder aux il est.

je sais que le titre Demande des solutions jQuery, mais j'espère que quelqu'un trouvera cela utile de toute façon.

8
répondu Håvard Geithus 2014-05-05 17:49:31

Thanks for the post Dave Aaron Smith

j'ai modifié votre réponse pour accepter les décimales et les nombres de la section nombre. Ce travail parfait pour moi.

$(".numeric").keypress(function(event) {
  // Backspace, tab, enter, end, home, left, right,decimal(.)in number part, decimal(.) in alphabet
  // We don't support the del key in Opera because del == . == 46.
  var controlKeys = [8, 9, 13, 35, 36, 37, 39,110,190];
  // IE doesn't support indexOf
  var isControlKey = controlKeys.join(",").match(new RegExp(event.which));
  // Some browsers just don't raise events for control keys. Easy.
  // e.g. Safari backspace.
  if (!event.which || // Control keys in most browsers. e.g. Firefox tab is 0
      (49 <= event.which && event.which <= 57) || // Always 1 through 9
      (96 <= event.which && event.which <= 106) || // Always 1 through 9 from number section 
      (48 == event.which && $(this).attr("value")) || // No 0 first digit
      (96 == event.which && $(this).attr("value")) || // No 0 first digit from number section
      isControlKey) { // Opera assigns values for control keys.
    return;
  } else {
    event.preventDefault();
  }
});
6
répondu lekshmi 2011-08-05 12:09:06
   window.jQuery.fn.ForceNumericOnly =
       function () {

           return this.each(function () {
               $(this).keydown(function (event) {
                   // Allow: backspace, delete, tab, escape, and enter
                   if (event.keyCode == 46 || event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 27 || event.keyCode == 13 ||
                       // Allow: Ctrl+A
                       (event.keyCode == 65 && event.ctrlKey === true) ||
                       // Allow: home, end, left, right
                       (event.keyCode >= 35 && event.keyCode <= 39)) {
                       // let it happen, don't do anything
                       return;
                   } else {
                       // Ensure that it is a number and stop the keypress
                       if (event.shiftKey || (event.keyCode < 48 || event.keyCode > 57) && (event.keyCode < 96 || event.keyCode > 105)) {
                           event.preventDefault();
                       }
                   }
               });
           });
       };

et appliquez ceci sur toutes les entrées que vous voulez:

$('selector').ForceNumericOnly();
6
répondu David Freire 2014-02-25 04:55:56

HTML5 prend en charge le nombre de type d'entrée avec une prise en charge globale du navigateur 88%+ selon CanIUse à partir D'octobre 2015.

<input type="number" step="0.01" min="0" name="askedPrice" id="askedPrice" />

ce n'est pas une solution liée à JQuery, mais l'avantage est que sur les téléphones mobiles clavier Android sera optimisé pour la saisie des numéros.

il est également possible d'utiliser le texte de type input avec le nouveau paramètre"pattern". Plus de détails dans la spécification HTML5.

je pense que c'est mieux que jquery solution, puisque dans cette question fournie jQuery solution ne supportent pas des milliers de séparateur. Si vous pouvez utiliser html5.

JSFiddle: https://jsfiddle.net/p1ue8qxj /

5
répondu Mladen Adamovic 2016-11-28 09:25:58

Cette fonction fait la même chose, utilise certaines des idées ci-dessus.

$field.keyup(function(){
    var val = $j(this).val();
    if(isNaN(val)){
         val = val.replace(/[^0-9\.]/g,'');
         if(val.split('.').length>2) val =val.replace(/\.+$/,"");
    }
    $j(this).val(val); 
});
  • afficher le feedback visuel (lettre incorrecte s'affiche avant de disparaître)
  • permet des décimales
  • captures multiples"."
  • n'a aucun problème avec le del gauche/droite etc.
4
répondu mordy 2012-01-17 20:46:38

/* voici la version de mon navigateur comment autoriser seulement numérique (0-9) dans la saisie HTML en utilisant jQuery?

* /

$("#inputPrice").keydown(function(e){
    var keyPressed;
    if (!e) var e = window.event;
    if (e.keyCode) keyPressed = e.keyCode;
    else if (e.which) keyPressed = e.which;
    var hasDecimalPoint = (($(this).val().split('.').length-1)>0);
    if ( keyPressed == 46 || keyPressed == 8 ||((keyPressed == 190||keyPressed == 110)&&(!hasDecimalPoint && !e.shiftKey)) || keyPressed == 9 || keyPressed == 27 || keyPressed == 13 ||
             // Allow: Ctrl+A
            (keyPressed == 65 && e.ctrlKey === true) ||
             // Allow: home, end, left, right
            (keyPressed >= 35 && keyPressed <= 39)) {
                 // let it happen, don't do anything
                 return;
        }
        else {
            // Ensure that it is a number and stop the keypress
            if (e.shiftKey || (keyPressed < 48 || keyPressed > 57) && (keyPressed < 96 || keyPressed > 105 )) {
                e.preventDefault();
            }
        }

  });
4
répondu roger 2017-09-25 14:32:57

vous pouvez utiliser decorplanit.com . Ils ont un support agréable pour numérique, ainsi que la monnaie, l'arrondissement, etc.

j'ai utilisé dans un environnement IE6, avec peu de retouches css, et ce fut un succès raisonnable.

par exemple, une classe css numericInput pourrait être définie, et elle pourrait être utilisée pour décorer vos champs avec les masques d'entrée numériques.

adapté de autoNumeric site web:

$('input.numericInput').autoNumeric({aSep: '.', aDec: ','}); // very flexible!
3
répondu Zero Distraction 2012-02-07 23:34:06

je pense que c'est une bonne façon de résoudre ce problème et il est extrêmement simple:

$(function() {
    var pastValue, pastSelectionStart, pastSelectionEnd;

    $("input").on("keydown", function() {
        pastValue          = this.value;
        pastSelectionStart = this.selectionStart;
        pastSelectionEnd   = this.selectionEnd;
    }).on("input propertychange", function() {
        var regex = /^[0-9]+\.?[0-9]*$/;

        if (this.value.length > 0 && !regex.test(this.value)) {
            this.value          = pastValue;
            this.selectionStart = pastSelectionStart;
            this.selectionEnd   = pastSelectionEnd;
        }
    });
});

Exemple: JSFiddle

scénarios couverts

la plupart des recommandations similaires échouent ici au moins une de celles-ci ou nécessitent beaucoup de code pour couvrir tous ces scénarios.

  1. permet 1 décimale seulement point.
  2. permet home , end , et les touches arrow .
  3. permet d'utiliser delete et backspace à n'importe quel indice.
  4. permet l'édition à n'importe quel index (à condition que l'entrée corresponde au regex).
  5. permet ctrl+v et shift+insert pour une entrée valide (même avec clic droit + coller).
  6. ne clignote pas la valeur du texte parce que l'événement keyup n'est pas utiliser.
  7. rétablit la sélection après une entrée invalide.

Scénarios "échec de l'1519210920"

  • commençant par 0.5 et supprimant seulement le zéro ne fonctionnera pas. Ceci peut être corrigé en changeant le regex en /^[0-9]*\.?[0-9]*$/ et en ajoutant un événement flou pour préparer un 0 lorsque la zone de texte commence par un point décimal (si désiré). Voir ce avancé scénario pour une meilleure idée de la façon de corriger cela.

Plugin

j'ai créé ce simple jQuery plugin pour rendre cela plus facile:

$("input").limitRegex(/^[0-9]+\.?[0-9]*$/);
3
répondu David Sherret 2014-12-20 19:05:11

la meilleure façon est de vérifier les contects de la zone de texte chaque fois qu'il perd la mise au point.

vous pouvez vérifier si le contenu est un" nombre " en utilisant une expression régulière.

ou vous pouvez utiliser le plugin de Validation, qui le fait essentiellement automatiquement.

2
répondu jrharshath 2009-05-21 07:17:30

vérifier ce code de recherche pour L'utilisation de la base de données:

function numonly(root){
    >>var reet = root.value;
    var arr1 = reet.length;
    var ruut = reet.charAt(arr1-1);
    >>>if (reet.length > 0){
        var regex = /[0-9]|\./;
        if (!ruut.match(regex)){
            var reet = reet.slice(0, -1);
            $(root).val(reet);
        >>>>}
    }
}
//Then use the even handler onkeyup='numonly(this)'
2
répondu Alex Homm 2010-03-06 15:44:58

il suffit d'exécuter le contenu à travers parseFloat(). Il retournera NaN sur Entrée invalide.

2
répondu Maciej Łebkowski 2010-03-06 15:54:17

C'est un extrait que je viens de faire (en utilisant une partie du code de Peter Mortensen / Keith Bentrup) pour une validation de pourcentage entier sur un champ de texte (jQuery est requis):

/* This validates that the value of the text box corresponds
 * to a percentage expressed as an integer between 1 and 100,
 * otherwise adjust the text box value for this condition is met. */
$("[id*='percent_textfield']").keyup(function(e){
    if (!isNaN(parseInt(this.value,10))) {
        this.value = parseInt(this.value);
    } else {
        this.value = 0;
    }
    this.value = this.value.replace(/[^0-9]/g, '');
    if (parseInt(this.value,10) > 100) {
        this.value = 100;
        return;
    }
});

ce code:

  • permet d'utiliser les clés numériques principales et le clavier numérique.
  • Valide à exclure Maj numérique de caractères (par exemple,#, $, %, etc)
  • remplace les valeurs de NaN par 0
  • remplace par 100 valeurs supérieures à 100

j'espère que cela aidera ceux qui sont dans le besoin.

2
répondu Francisco Alvarado 2010-11-11 21:31:32

trouvé une grande solution ici http://ajax911.com/numbers-numeric-field-jquery/

je viens de changer le "keyup" en "keydown" conformément à mon exigence

2
répondu Mithil 2012-10-05 16:30:04

si vous utilisez HTML5, vous n'avez pas besoin d'aller très loin pour effectuer la validation. Il suffit d'utiliser -

<input type="number" step="any" />

l'attribut step permet à la virgule d'être valide.

2
répondu Jay Blanchard 2014-05-23 16:55:10

autre façon de garder la position caret sur l'entrée:

$(document).ready(function() {
  $('.numbersOnly').on('input', function() {
    var position = this.selectionStart - 1;

    fixed = this.value.replace(/[^0-9\.]/g, '');  //remove all but number and .
    if(fixed.charAt(0) === '.')                  //can't start with .
      fixed = fixed.slice(1);

    var pos = fixed.indexOf(".") + 1;
    if(pos >= 0)
      fixed = fixed.substr(0,pos) + fixed.slice(pos).replace('.', '');  //avoid more than one .

    if (this.value !== fixed) {
      this.value = fixed;
      this.selectionStart = position;
      this.selectionEnd = position;
    }
  });
});

avantages:

  1. l'utilisateur peut utiliser les touches fléchées, Backspace, Delete, ...
  2. fonctionne quand vous voulez coller des numéros

Plunker: Démonstration de travail

2
répondu Carlos Toledo 2016-09-13 22:44:21

je viens de trouver un plugin encore meilleur. Vous donne beaucoup plus de contrôle. Supposons que vous ayez un champ DOB où vous avez besoin qu'il soit numérique mais accepte aussi les caractères" / "ou" -".

ça marche bien!

Check it out at http://itgroup.com.ph/alphanumeric / .

1
répondu Bachir El Khoury 2010-03-06 15:52:50
    $(".numeric").keypress(function(event) {
  // Backspace, tab, enter, end, home, left, right
  // We don't support the del key in Opera because del == . == 46.
  var controlKeys = [8, 9, 13, 35, 36, 37, 39];
  // IE doesn't support indexOf
  var isControlKey = controlKeys.join(",").match(new RegExp(event.which));
  // Some browsers just don't raise events for control keys. Easy.
  // e.g. Safari backspace.
  if (!event.which || // Control keys in most browsers. e.g. Firefox tab is 0
      (49 <= event.which && event.which <= 57) || // Always 1 through 9
      (48 == event.which && $(this).attr("value")) || // No 0 first digit
      isControlKey) { // Opera assigns values for control keys.
    return;
  } else {
    event.preventDefault();
  }
});

ce code a bien fonctionné sur moi, j'ai juste dû ajouter les 46 dans le tableau controlKeys pour utiliser la période, Bien que je ne pense pas que c'est la meilleure façon de le faire;)

1
répondu Reedyseth 2010-07-12 05:53:41

j'ai utilisé ceci,avec de bons résultats..

ini=$("#id").val();
a=0;
$("#id").keyup(function(e){
    var charcode = (e.which) ? e.which : e.keyCode;
    // for decimal point
    if(!(charcode===190 || charcode===110))
    {           // for numeric keys andcontrol keys
        if (!((charcode>=33 && charcode<=57) || 
        // for numpad numeric keys
        (charcode>=96 && charcode<=105) 
        // for backspace
        || charcode==8)) 
        {
            alert("Sorry! Only numeric values allowed.");
            $("#id").val(ini);
        }
        // to include decimal point if first one has been deleted.
        if(charcode===8)
        {
            ini=ini.split("").reverse();
            if(ini[0]==".")
            a=0;                 
        }
    }
    else
    {
        if(a==1)
        {
            alert("Sorry! Second decimal point not allowed.");
            $("#id").val(ini);
        }
        a=1;
    }
    ini=$("#id").val();
});


find keycodes at http://www.cambiaresearch.com/articles/15/javascript-char-codes-key-codes
1
répondu Kaustubh 2012-07-31 20:55:30

c'est très simple que nous avons déjà une fonction JavaScript intégrée" isNaN " est là.

$("#numeric").keydown(function(e){
  if (isNaN(String.fromCharCode(e.which))){ 
    return false; 
  }
});
1
répondu Jyothu 2012-12-20 06:14:24