202 votes

Comment faire en sorte que les balises HTML n'acceptent que les valeurs numériques?

Je dois m'assurer qu'un certain champ <input> ne prend que des nombres comme valeur. L'entrée ne fait pas partie d'un formulaire. Par conséquent, il n'est pas soumis. La validation lors de la soumission n'est pas une option. Je veux que l'utilisateur ne puisse pas taper de caractères autres que des chiffres.

Y a-t-il un moyen élégant d'y parvenir?

350voto

Viral Patel Points 2837

Vous pouvez utiliser HTML5 type d'entrée nombre de restreindre le nombre des entrées:

<input type="number" name="someid" />

Cela fonctionnera uniquement en HTML5 plainte navigateur. Assurez-vous que votre document html est doctype est:

<!DOCTYPE html>

Pour usage général, vous pouvez avoir JS de validation ci-dessous:

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

<input type="someid" name="number" onkeypress="return isNumberKey(event)"/>

Si vous souhaitez autoriser les décimales de remplacer la condition "if" avec ceci:

if (charCode > 31 && (charCode != 46 &&(charCode < 48 || charCode > 57)))

Source: HTML de Saisie de Texte permettent uniquement d'entrée Numérique

JSFiddle démo: http://jsfiddle.net/viralpatel/nSjy7/

53voto

martincarlin87 Points 2881

Vous pouvez également utiliser l'attribut pattern en HTML 5:

 <input type="text" name="name" pattern="[0-9]" title="Title" /> 
 

http://www.pageresource.com/html5/input-validation-tutorial/

Bien que, si votre type de document n'est pas html alors je pense que vous aurez besoin d'utiliser du javascript / jquery.

11voto

Vous pouvez utiliser un <input type="number" /> . Cela permettra uniquement aux chiffres d'être entrés dans la zone de saisie.

exemple: http://jsfiddle.net/SPqY3/

Veuillez noter que la balise type="number" entrée est uniquement prise en charge par les nouveaux navigateurs.

Pour Firefox, vous pouvez valider l’entrée en utilisant javascript:

http://jsfiddle.net/VmtF5/

3voto

dan1111 Points 4319

Que diriez-vous d'utiliser <input type="number"...> ?

http://www.w3schools.com/tags/tag_input.asp

En outre, voici une question qui contient des exemples d'utilisation de Javascript pour la validation .

Mise à jour: lié à une meilleure question (merci alexblum).

3voto

drakoumelitos Points 167

Si vous pouvez utiliser HTML5, vous pouvez faire <input type="number" /> Sinon, vous devrez soit le faire par le biais de javascript, car vous avez dit qu'il n'est pas soumis pour le faire à partir de codebehind.

 <input id="numbersOnly" onkeypress='validate()' />

function validate(){
  var returnString;
  var text = document.getElementByID('numbersOnly').value;
  var regex = /[0-9]|\./;
  var anArray = text.split('');
  for(var i=0; i<anArray.length; i++){
   if(!regex.test(anArray[i])
   {
     anArray[i] = '';
   }
  }
  for(var i=0; i<anArray.length; i++) {
    returnString += anArray[i];
  }
  document.getElementByID('numbersOnly').value = returnString;
}
 

PS n’a pas testé le code, mais il devrait être plus ou moins correct sinon vérifier les fautes de frappe: D Vous voudrez peut-être ajouter quelques éléments supplémentaires, comme quoi faire si la chaîne est nulle ou vide, etc. Vous pouvez également accélérer les choses: D

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