Vérification contenu d'une case (Javascript)

Résolu
abderrahim84 Messages postés 20 Statut Membre -  
abderrahim84 Messages postés 20 Statut Membre -
Bonjour,

Je voudrais savoir comment vérifier en javascript qu'une case ne contient que des chiffres ?

Par exemple la saisie d'une année ?

Je vérifie déjà que la case n'est pas vide et que la longueur est de 4.

if (document.form1.annee.value=="")
		{
			alert("Veuillez saisir l'année de parution \n");
			document.form1.annee.focus();
		
		}
		else if (document.form1.annee.value.length!=4)
		{
			alert("L'année de parution doit comporter  4 caractères \n");
			document.form1.annee.focus();
			
		}


1 réponse

  1. [Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   1 108
     
    Salut abderrahim84,

    Avec une expression rationnelle ("regex" ou "regular expression" en anglais), tu peux vérifier en javascript si une chaîne est composée exclusivement de chiffres et a une longeur de 4 caractères en une fois.

    Tu peux te passer de "else if (document.form1.annee.value.length!=4)" et tu fais dès lors comme cela :

      else if ( document.form1.annee.value.match(/^[0-9]{4}$/) )    
      {    
       alert("L'année de parution doit comporter 4 caractères et être exclusivement composée de chiffres\n");    
       document.form1.annee.focus();    
           
      }

    Explication :
    ^: début de ligne
    [0-9] : n'importe quel chiffre entre 0 et 9
    {4} : présents consécutivement 4 fois
    $ : fin de ligne

    https://www.w3schools.com/jsref/jsref_obj_regexp.asp
    http://www.w3schools.com/js/js_obj_regexp.asp

    Dal
    1
    1. abderrahim84 Messages postés 20 Statut Membre 3
       
      Merci Dal !
      Cependant j'ai testé et ça marche pas :\
      0
    2. [Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   1 108
       
      Oups, il manque la négation (!), et le "value" est en trop, car match est une fonction de la chaîne.

      Ce test devrait être mieux :

      else if ( !document.form1.annee.match(/^[0-9]{4}$/) )

      Dal
      0
    3. abderrahim84 Messages postés 20 Statut Membre 3
       
      Merci beaucoup ! ça marche ^^
      Mais il faut mettre le value avant match tout de même :)

      Merci encore...
      0