Forum
Posez vos questions, ici

5.Formulaire avancé

5.2.Avec Dojo

5.2.2.Champ texte

5.2.2.1.Introduction

Une fois votre document HTML [c'est quoi?] prêt à traiter les extensions Dojo [c'est quoi?] [comment?] , vous pouvez envisager d'avoir un champ de saisie de texte plus évolué que ce qui vous est proposé par défaut. Pour cela il suffit d'ajouter un "pseudo" attribut dojoType avec la valeur dijit.form.ValidationTextBox à votre champ de saisie (i.e. à la balise input de type "text" [c'est quoi?] ). Comme suit
<input type="text" name="nomduchamp" dojoType="dijit.form.ValidationTextBox" />
mais pour que cela fonctionne, il faut ajouter l'objet dijit.form.ValidationTextBox à la liste des objets que vous souhaitez utiliser. Cela se fait par l'ajout d'une ligne
dojo.require("dijit.form.ValidationTextBox");
à la liste des paquets inclus. Comme indiqué dans le chapitre "installation" [comment?] .
<html>
  <head>
    <style type="text/css">
    @import "http://ajax.googleapis.com/ajax/libs/dojo/1.2.3/dojo/resources/dojo.css";
    @import "http://ajax.googleapis.com/ajax/libs/dojo/1.2.3/dijit/themes/tundra/tundra.css";
    body {
        margin:0;
    }
    </style>
    <script type="text/javascript" 
            src="http://ajax.googleapis.com/ajax/libs/dojo/1.2.3/dojo/dojo.xd.js"
            djConfig="parseOnLoad: true"></script>
    <script type="text/javascript">
        dojo.require("dijit.form.ValidationTextBox");
    </script>
    <title>Dojo: Champ de saisie ValidationTextBox</title>
  </head>
  <body class="tundra">
    <form action="">
     Nom: <input type="text" name="nom" dojoType="dijit.form.ValidationTextBox"/>
    </form>
  </body>
</html>
En l'état, hormis un léger changement d'apparence, vous n'observez pas vraiment de changement par rapport à un champ ordinaire

5.2.2.2.Champ obligatoire

Vous pouvez rendre ce champ "obligatoire" en ajoutant l'attribut dojo required avec la valeur true.
<input type="text" name="nomduchamp" dojoType="dijit.form.ValidationTextBox"
                                     required="true" />

Maintenant, si vous cliquez dans le champ de saisie puis en sortez sans rien saisir alors un signal d'erreur s'affichera. Cliquez sur le signal et vous obtiendrez le message correspondant.

5.2.2.3.Traduction des messages

Les messages (d'erreur ou autres) proposés par défaut peuvent être "localisés" (pour reprendre l'anglicisme généralement utilisé). C'est à dire traduit dans la langue de l'utilisateur. Pour cela, il faut dans un premier temps, préciser dans les options de configuration, autrement dit via l'attribut dojo djConfig, la langue utilisée (la "locale" selon un autre anglicisme couramment utilisé). Pour cela, une solution consiste à modifier la ligne d'inclusion du framework de la façon suivante:
<script type="text/javascript" 
        src="http://ajax.googleapis.com/ajax/libs/dojo/1.2.3/dojo/dojo.xd.js"
        djConfig="parseOnLoad: true, locale:'fr'"></script>
Notre exemple devient alors

5.2.2.4.Personnalisation des messages

Les messages d'erreur peuvent être tout simplement personnalisé via l'attribut dojo invalidMessage
<input type="text" name="nomduchamp" dojoType="dijit.form.ValidationTextBox"
                                     required="true" invalidMessage="Pas glop"/>

5.2.2.5.Invitation

Le champ de saisie peut également être personnalisé pour afficher un message d'invitation à la saise via l'attribut dojo promptMessage
<input type="text" name="nomduchamp" dojoType="dijit.form.ValidationTextBox"
                                     required="true" promptMessage="Veuillez indiquer votre nom"/>

Ce message sera alors affiché lorsque le champ reçoit le focus (typiquement lorsque l'on clique sur le champ).