J'utilise des formulaires en HTML et en javascript. Je souhaite qu'une alerte ne s'affiche que si l'utilisateur entre unLETTREet clique sur 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;
}
}
Vous pouvez utiliser la fonction isNaN pour déterminer si une valeur ne doit pas être convertie en nombre. Exemple comme ci-dessous:
function checkInp()
{
var x=document.forms["myForm"]["age"].value;
if (isNaN(x))
{
alert("Must input numbers");
return false;
}
}
Utilisez Expression régulière pour ne faire correspondre que les lettres. Il est également bon d’avoir des connaissances sur, si jamais vous avez besoin de faire quelque chose de plus compliqué, comme s’assurer que le nombre de chiffres est exact.
function checkInp()
{
var x=document.forms["myForm"]["age"].value;
var regex=/^[a-zA-Z]+$/;
if (!x.match(regex))
{
alert("Must input string");
return false;
}
}
Encore mieux serait de nier tout sauf des chiffres:
function checkInp()
{
var x=document.forms["myForm"]["age"].value;
var regex=/^[0-9]+$/;
if (x.match(regex))
{
alert("Must input numbers");
return false;
}
}
Vous pouvez utiliser la fonction isNaN . Il renvoie true si les données ne sont pas un nombre. Ce serait quelque chose comme ça:
function checkInp()
{
var x=document.forms["myForm"]["age"].value;
if (isNaN(x)) // this is the code I need to change
{
alert("Must input numbers");
return false;
}
}
Remarque: isNan considère 10.2 comme un nombre valide.
vous pouvez utiliser isNaN (). il renvoie vrai lorsque les données ne sont pas un nombre.
var data = 'hello there';
if(isNaN(data)){
alert("it is not number");
}else {
alert("its a valid number");
}
Essaye ça:
if(parseInt("0"+x, 10) > 0){/* x is integer */}
Il suffit de trouver le reste en divisant par 1, soit x% 1. Si le reste est 0, cela signifie que x est un nombre entier. Sinon, vous devez afficher le message "Doit entrer des nombres". Cela fonctionnera même dans le cas de chaînes, de nombres décimaux, etc.
function checkInp()
{
var x = document.forms["myForm"]["age"].value;
if ((x%1) != 0)
{
alert("Must input numbers");
return false;
}
}
function isNumber(data){
data = data +"e1"; // Disallow eng. notation "10e2"+"e1" is NaN
var clean = parseFloat(data,10) / data ; // 1 if parsed cleanly
return (clean && (data/data) === 1.0); // Checks for NaN
}
function isInteger(data){
data = data +"e1"; // Disallow eng. notation "10e2"+"e1" is NaN
var clean = parseInt(data,10) / data ; // 1 if parsed cleanly
return (clean && (data%1) === 0); // Checks For integer and NaN
}
Un meilleur code (sans erreur) serait comme:
function isReallyNumber(data) {
return typeof data === 'number' && !isNaN(data);
}
Cela gérera aussi les chaînes vides. Une autre raison, isNaN("12")
est égal à false
, mais "12"
est une chaîne et non un nombre; elle devrait donc donner true
. Enfin, un lien bonus qui pourrait vous intéresser.
Je sais que ce post est vieux, mais c’est le premier qui est apparu lorsque j’ai fait une recherche. J'ai essayé @Kim Kling RegExp mais cela a lamentablement échoué. Aussi, avant de trouver ce forum, j'avais essayé presque toutes les autres variantes énumérées ici. À la fin, aucun d’entre eux n’a fonctionné, sauf celui que j’ai créé; ça marche bien, en plus c'est es6:
let regex = new RegExp(/[^0-9]/, 'g');
let x = document.forms["myForm"]["age"].value;
if (x.match(regex)) {
alert("Must be a valid number");
return
}
La méthode la plus moderne et la plus efficace est typeof (variable) si vous vous souciez du nombre réel et non du nombre de chaîne. Par exemple:
var a = 1;
var b = '1';
typeof a: // Output: "number"
typeof b: // Output: "string
Je pense que le plus simple serait de créer un objet Number
avec la chaîne et de vérifier si, avec l'aide de la fonction isInteger
fournie par la classe Number
.
Number.isInteger(Number('1')) //true
Number.isInteger(Number('1 mango')) //false
Number.isInteger(Number(1)) //true
Number.isInteger(Number(1.9)) //false