JavaScript : Gestion avancée des formulaires
Sommaire ]
Mikael Le Moal

Valeur numérique obligatoire

Le contrôle du champ numérique se fait en deux étapes. La première consiste à vérifier qu'une valeur est belle et bien présente dans le champ. C'est la fonction nonVide() qui s'en charge :

17: function nonVide(mt) {
18:    if (mt.value.length<1) {
19:       return false;
20:    }
21:    else {
22:       return true;
23:    }
24: }

Cette fonction va simplement vérifier si l'élément passé en argument contient ou non une valeur ou non, auquel cas sa longueur (length) est inférieure à 1. On retourne alors la valeur true ou false suivant le cas.

Ne perdez pas vos visiteurs. Une majorité de sites affichent un astérisque (*) après le libellé du champ pour indiquer que ce dernier est à remplir obligatoirement.

La deuxième étape consiste à vérifier que la valeur saisie dans le champ ne possède pas plus d'une décimale. C'est la fonction verifNb qui se charge de ce contrôle. Le premier paramètre correspond au champ de formulaire à valider, le second contient le nombre de décimales autorisé :

26: function verifNb(mt,dec) {
27:    if (mt.value == "") {
28:      return true;
29:    }
30:
31:    if (isNaN(mt.value)) {
32:       return false;
33:    }
34:    else {
35:      if (mt.value.indexOf('.') == -1) {
36:          return true;
37:      }
38:      else {
39:        dectext = mt.value.substring(mt.value.indexOf('.')+1, mt.value.length);
40:        if (dectext.length > dec)  {
41:           return false;
42:        }
43:        else {
44:           return true;
45:        }
46:      }
47:    }
48: }

On vérifie en premier lieu si le champ est vide ou non (lignes 27 à 29). On considère que le champ est valide si la valeur est vide. (On autorise en fait à ne pas renseigner ce champ. S'il est obligatoire, il faudra aussi utiliser la fonction nonVide). On vérifie ensuite que la valeur est bien numérique (lignes 31 à 33). Pour cela, on utilise la fonction JavaScript isNaN().

Ensuite, on vérifie que la valeur contient des décimales (lignes 35 à 37). Pour cela, on vérifie simplement la présence d'un point dans la valeur. Si ce point est détectée, on passe à l'étape suivante. Sinon, le champ est valide. Dernier cas : on vérifie que le nombre de décimales est valide (lignes 38 à 46). Pour cela, tout ce qui se trouve après le point est stocké dans une variable (dectext). La longueur de cette dernière donne le nombre de décimales. En comparant cette longueur et le deuxième paramètre de la fonction, on valide ou non le champ (ligne 40).