Apprendre Javascript pour rendre vos pages Web interactives

Auteur: Mohamed CHINY Durée necessaire pour le cours de Apprendre Javascript pour rendre vos pages Web interactives Niveau recommandé pour le cours de Apprendre Javascript pour rendre vos pages Web interactives Supports vidéo disponibles pour ce cours Exercices de renforcement disponibles pour ce cours Quiz disponible pour ce cours

Leçon 12: Exercice - Contrôle de saisie en Javascript

Toutes les leçons

Apprendre Javascript pour rendre vos pages Web interactives

Leçon 1
Javascript c'est quoi?
Leçon 2
Comment intégrer du code Javascript?
Leçon 3
Pour commencer: les bases du Javascript
Leçon 4
Les bases du Javascript (La suite)
Leçon 5
Structures de contrôle (conditions et boucles)
Leçon 6
Les fonctions
Leçon 7
Les événements en Javascript
Leçon 8
Objets, méthodes et attributs
Leçon 9
Exercices - Permutation et calculatrice
Leçon 10
Objet Array: les tableaux
Leçon 11
Objet String: chaînes de caractères
Leçon 12
Exercice - Contrôle de saisie en Javascript
Leçon 13
Objet Math
Leçon 14
Objet Date
Leçon 15
Objet RegExp: Les expressions régulières
Leçon 16
Objet window
Leçon 17
Exercice - Afficher un message lettre par lettre
Leçon 18
Objet screen
Leçon 19
Objet Document et DOM en Javascript (Partie 1)
Leçon 20
Objet Document et DOM en Javascript (Partie 2)
Leçon 21
Objet Document et DOM en Javascript (Partie 3)
Leçon 22
Objet event
Leçon 23
Gestion des exceptions
Leçon 24
Exercice - Album photo
Leçon 25
API Selectors
Leçon 26
Exercice - Réaliser un jeu de loterie avec Javascript
Leçon 27
Exercice - Réaliser un album photo à effet de vagues (ou domino)
Leçon 28
Fonctions fléchées (Arrow function)
Leçon 29
Fonctions de rappel (Callback function)
Leçon 30
Types primitifs, non primitifs et notion du prototype
Leçon 31
Objets personnalisés en Javascript
Leçon 32
Classes et héritage
Leçon 33
Les promesses - Objet Promise
Leçon 34
Gérer les promesses avec une fonction asynchrone - async et await

Exercice sur les chaînes de caractères

Contrôle de nombre de caractères

Vous avez probablement envoyé un SMS gratuitement depuis le site Web de votre opérateur mobile, où postulé votre site Web à un annuaire de recherche en vue d'en acquérir un back-link. Si c'est le cas, alors vous avez certainement compris l'objectif de l'exercice.

Nous voulons créer un une zone de texte (ou espace de texte) pour que l’internaute puisse y saisir un texte quelconque. On suppose que celui ci ne doit pas contenir plus de 60 caractères. Pour que l'internaute ne soit pas surpris par le refus de son post suite à un excès de caractères, nous allons prévoir une zone de texte en bas du textarea qui affiche le nombre de caractères restants. Ce nombre sera automatiquement calculé à chaque modification du texte par le clavier (pour simplifier l'exercice, nous n'allons pas traiter le cas où l'internaute fait un copier-coller dans la zone de saisie).

Si la taille du texte saisi dépasse la longueur maximale spécifiée, alors un message alert() s'affiche pour signaler à l'internaute l'excès de caractères, en plus, tout ce qui dépasse est automatiquement supprimé pour ne conserver que les 60 premiers caractères autorisés.

Pour avoir une idée plus claire sur ce qu'on doit faire, voici un exemple:

caractère(s) restant(s).
Dans cet exemple, je me suis contenté d'un maximum de 30 caractères pour stopper la saisie.

Solution

<!DOCTYPE html>
<html>
   <head>
      <meta charset="UTF-8" />
      <script language="javascript">
         max=60;
         function saisie(){
            if(document.fo.sms.value.length>max){
               alert("Vous avez dépassé "+max+" caractères!");
               document.fo.sms.value=document.fo.sms.value.substring(0,max);
            }
            document.fo.restant.value=max-document.fo.sms.value.length;
         }
         function init(){
            document.fo.sms.value="";
            document.fo.sms.focus();
            saisie();
         }   
      </script>
   </head>
   <body onLoad="init()">   
      <form name="fo">
         <input type="text" size="70" name="sms" onKeyUp="saisie()">
         <br />
         <input type="text" name="restant" size="3" readonly>
         caractère(s) restant(s).
      </form>
   </body>
</html>
Des explications s'imposent. En fait, vous avez encore remarqué la fonction init() appelée au chargement de la page. Elle sert à exécuter certaines opérations au tout début, avant même que l'internaute ne commence à saisir. Elle permet de vider l'espace (ou zone) de texte, activer le champs de saisie pour que le curseur y soit placé directement, et en fin, appeler la fonction saisie() qui affichera dans la zone de texte le nombre de caractères restants.

Concernant le nombre maximal de caractères à ne pas dépasser, je l'ai déclaré en tant que variable max à laquelle j'ai affecté la valeur 60. De cette manière on peut autoriser plus ou moins de caractères en changeant seulement la valeur de cette variable.

L’événement qui appelle la fonction saisie() sera évidemment associé au clavier. J'ai opté pour onKeyUp. Comme ça, la fonction ne s'exécutera qu'après que l'utilisateur aie relâché la touche.

Vous avez peut être remarqué l'attribut HTML readonly sur la zone de texte qui affiche le compteur. Cet attribut empêche toute modification du texte directement dans la zone sur laquelle il est appliqué. Il s'agit d'un attribut booléen dans la valeur vaut implicitement true.
Leçon 6
Les fonctions
Leçon 12
Exercice - Contrôle de saisie en Javascript
Leçon 13
Objet Math
Leçon 14
Objet Date
Leçon 16
Objet window
Leçon 18
Objet screen
Leçon 22
Objet event
Leçon 25
API Selectors