Javascript – validation, nombres seulement

J'essaie d'obtenir mon formulaire de connexion pour valider uniquement si seulement des nombres ont été entrés. Je peux le faire si l'entrée n'est que des chiffres, mais quand je tape tous les caractères après un nombre, il valide encore, et 12akf fonctionnera. 1 heure du matin. Comment puis-je réussir?

Partie de la connexion

<form name="myForm"> <label for="firstname">Age: </label> <input name="num" type="text" id="username" size="1"> <input type="submit" value="Login" onclick="return validateForm()"> function validateForm() { var z = document.forms["myForm"]["num"].value; if(!z.match(/^\d+/)) { alert("Please only enter numeric characters only for your Age! (Allowed input:0-9)") } } 

Match contre /^\d+$/ . $ Signifie "fin de ligne", de sorte que tous les caractères non numériques après la durée initiale des chiffres entraîneront une échouée.

Modifier:

RobG suggère judicieusement le plus succinct /\D/.test(z) . Cette opération teste l'inverse de ce que vous voulez. Il renvoie true si l'entrée comporte des caractères non numériques.

Il suffit d'omettre la négation ! Et utilisez if(/\D/.test(z)) .

Voici comment valider l'entrée pour seulement accepter les numéros, cela acceptera des nombres comme 123123123.41212313

 <input type="text" onkeypress="if ( isNaN(this.value + String.fromCharCode(event.keyCode) )) return false;" /> 

Et cela n'acceptera pas d'entrer le point (.), Donc il n'acceptera que des nombres entiers

 <input type="text" onkeypress="if ( isNaN( String.fromCharCode(event.keyCode) )) return false;" /> 

De cette façon, vous ne permetz pas à l'utilisateur d'entrer tout sauf des nombres

Réponse tardive, mais peut-être cela aidera quelqu'un

 function isNumber(n) { return !isNaN(parseFloat(n)) && isFinite(n); } 

L'utilisation sera comme

 nn=document.forms["myForm"]["num"].value; ans=isNumber(nn); if(ans) { //only numbers } 

Ce but a été trouvé à partir d'ici avec un énorme vote

Valider les nombres en JavaScript – IsNumeric ()

La solution la plus simple.

Merci à mon partenaire qui m'a donné cette réponse.

Vous pouvez définir un événement onkeypress dans la zone de texte d' entrée comme ceci:

onkeypress="validate(event)"

Puis utilisez des expressions régulières comme ceci:

 function validate(evt){ evt.value = evt.value.replace(/[^0-9]/g,""); } 

Il analysera et supprimera toute lettre ou signe différent du numéro dans le champ.

Les expressions régulières sont excellentes, mais pourquoi ne pas simplement vous assurer que c'est un nombre avant d'essayer de faire quelque chose avec elle?

 function addemup() { var n1 = document.getElementById("num1"); var n2 = document.getElementById("num2"); sum = Number(n1.value) + Number(n2.value); if(Number(sum)) { alert(sum); } else { alert("Numbers only, please!"); }; }; 
 function ValidateNumberOnly() { if ((event.keyCode < 48 || event.keyCode > 57)) { event.returnValue = false; } } 

Cette fonction ne permettra que des nombres dans le champ de texte.

Pas besoin du code long pour la restriction d'entrée de numéro, essayez simplement ce code.

Il accepte également les valeurs et les valeurs valides valides.

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

Celui-ci m'a fonctionné:

 function validateForm(){ var z = document.forms["myForm"]["num"].value; if(!/^[0-9]+$/.test(z)){ alert("Please only enter numeric characters only for your Age! (Allowed input:0-9)") } } 

En utilisant le formulaire que vous avez déjà:

 var input = document.querySelector('form[name=myForm] #username'); input.onkeyup = function() { var patterns = /[^0-9]/g; var caretPos = this.selectionStart; this.value = input.value.replace(patterns, ''); this.setSelectionRange(caretPos, caretPos); } 

Cela supprimera tous les non-chiffres après la libération de la clé.

// J'utilise ce jquery il fonctionne parfait, ajoute la classe nosonly à n'importe quelle zone de texte qui ne devrait être que des nombres:

 $(document).ready(function () { $(".nosonly").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) { alert("Only Numbers Allowed"),event.preventDefault(); } } }); });