83 votes

Vérifier si l'entrée est un chiffre ou une lettre javascript

J'utilise des formulaires en HTML et en javascript. J'aimerais qu'une alerte apparaisse uniquement si l'utilisateur saisit un LETTRE et clique submit .

J'ai donc le code HTML :

<form name="myForm" action="" onsubmit="return checkInp()" method="post">
    First name: <input type="text" name="age">
<input type="submit" value="Submit">   

Et le code javascript :

function checkInp()
{
var x=document.forms["myForm"]["age"].value;
if (x consists of any letters) // this is the code I need to change
{
alert("Must input numbers");
return false;
}
}

6voto

str8up7od Points 82

Je sais que cet article est ancien mais c'est le premier qui est apparu lorsque j'ai fait une recherche. J'ai essayé @Kim Kling RegExp mais j'ai échoué lamentablement. De plus, avant de trouver ce forum, j'avais essayé presque toutes les autres variantes listées ici. En fin de compte, aucune n'a fonctionné sauf celle que j'ai créée ; elle fonctionne bien, et en plus elle est es6 :

    const regex = new RegExp(/[^0-9]/, 'g');
    const val = document.forms["myForm"]["age"].value;

    if (val.match(regex)) {
       alert("Must be a valid number");
    }

5voto

Ram swaroop Points 309

Un meilleur code (sans erreur) serait le suivant :

function isReallyNumber(data) {
    return typeof data === 'number' && !isNaN(data);
}

Cela permet également de traiter les chaînes vides. Autre raison, isNaN("12") est égal à false mais "12" est une chaîne de caractères et non un nombre, il devrait donc aboutir à true . Enfin, un lien bonus qui pourraient vous intéresser.

4voto

Masoud Nazari Points 458

Essayez ceci :

if(parseInt("0"+x, 10) > 0){/* x is integer */}

3voto

Vikas Bansal Points 3571

Je pense que le plus simple serait de créer un fichier Number avec la chaîne de caractères et vérifier si, à l'aide de la fonction isInteger fournie par Number elle-même.

Number.isInteger(Number('1')) //true
Number.isInteger(Number('1 mango')) //false
Number.isInteger(Number(1)) //true
Number.isInteger(Number(1.9)) //false

0voto

La meilleure méthode, et la plus moderne, est le typeof (variable) si vous vous intéressez à un nombre réel et non à un nombre issu d'une chaîne de caractères. Par exemple :

var a = 1;
var b = '1';

typeof a: // Output: "number"
typeof b: // Output: "string

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X