Aller au contenu

Sujets conseillés

Posté (modifié)

Bonjour,

Enthousiasmé par l'article de Peter-Paul Koch, j'ai décidé d'écrire mon premier script javascript.

Soit l'extrait de formulaire suivant :

<p><label for="vCard.DisplayName">Nom :</label> <input type="text" id="vCard.DisplayName" value="Vos nom & prénom" /></p>

<p><label for="vCard.Email">E-mail :</label> <input type="text" id="vCard.Email" value="Votre adresse électronique" /></p>

<p><label for="vCard.Homepage">Page Web :</label> <input type="text" id="vCard.Homepage" value="L'adresse de votre site (optionnel)" /></p>

<p><label for="submit"> </label><input type="submit" id="submit" value="Envoyer" /></p>

Je souhaite vider automatiquement les valeurs par défaut. J'ai donc écrit ce script :

var W3CDOM = (document.createElement && document.getElementsByTagName);

window.onload = init;

function init()
{
if (!W3CDOM) return;
 var inputs = document.getElementsByTagName('input');
 for (var i=0;i<inputs.length;i++)
{
 if (inputs[i].getAttribute('type') == 'submit') continue;
   inputs[i].onfocus = erase;
}
}

function erase()
{
if (this.getAttribute('value') == this.defaultValue);
 this.setAttribute('value', '');
}

Qu'en pensez-vous ? Est-ce élégant ? sale ? trop bavard ? pas assez ? C'est mon premier script, vous pouvez taper dessus autant que vous voulez, j'encaisse :) , mais alors surtout dites-moi ce que je dois améliorer. Merci !

Modifié par ThomasL
Posté

Mon avis va être des plus décevants : en fait, c'est un mauvais sujet pour te lancer dans javascript, car il ne faut pas mettre de valeur par défaut dans les champs de formulaires.

Je sais : la WAI et les autres recommandations et validateurs d'accessibilité l'exigent (en particulier Bobby). Mais:

- cette recommandation a disparu dans le projet WAI2.0, et ce n'est pas pour rien.

- la WAI1.0 demande à ce que l'on mette des valeurs par défaut... en attendant que les agents utilisateurs sachent tous restituer correctement les champs vides. Or, c'est actuellement le cas, semble-t-il.

Cette valeur par défaut crée maintenant plus de problèmes qu'elle n'en résoud:

- ergonomiquement, en obligeant à l'effacer avant de saisir

- ce que le javascript ne résoud pas puisqu'il n'est pas disponible pour tous les utilisateurs

- ce qu'un javascript mal conçu rendra très problématique parfois : par exemple, si j'ai laborieusement entré mon adresse e-mail et fait une erreur... je dois tout saisir à nouveau puisque le champ sera effacé entièrement si je tente d'y avoir accès pour corriger...

- et plus généralement, cette valeur par défaut est une source de confusion pour de nombreux utilisateurs, qui ne savent pas s'il faut l'effacer ou non...

Donc:

- javascript à revoir s'il rend impossible de corriger une saisie sans qu'elle soit effacée entièrement

- javascript inutile. Il suffit de supprimer les value="..." du formulaire ;)

Posté
Mon avis va être des plus décevants : en fait, c'est un mauvais sujet pour te lancer dans javascript, car il ne faut pas mettre de valeur par défaut dans les champs de formulaires.

<{POST_SNAPBACK}>

J'aurais dû le dire : avoir travaillé sur ce script m'a fait prendre conscience des problèmes posés. Comme exercice, il en vaut un autre, même si finalement je ne l'applique jamais.

- ce qu'un javascript mal conçu rendra très problématique parfois : par exemple, si j'ai laborieusement entré mon adresse e-mail et fait une erreur... je dois tout saisir à nouveau puisque le champ sera effacé entièrement si je tente d'y avoir accès pour corriger...

<{POST_SNAPBACK}>

Justement je pense (enfin j'espère) avoir suffisamment bien fait mon script pour que le problème ne se pose pas (la fonction erase ne marche que si la valeur initiale est présente : if... this.defaultValue).

Bon, la prochaine fois je mentionne que ce script est à éviter car la pratique qu'il sous-entend est obsolète, mais en attendant, pas de commentaires sur mon script lui-même ? :)

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...