Page 1 sur 1

[ onFocus ] vider un textarea

Posté : 24 mai 2006, 15:50
par VaN
Bonjour,
j'essaye vainement d'ajouter une petite fonctionnalité à un formulaire.

dans une textarea qui possède une value par défaut et qui sert à ajouter un commentaire, j'aimerais :
- que lorsque que l'utilisateur clic dans la textarea, le texte par défaut s'efface (ça ça marchait avant que je commence mes tests, avec onFocus="this.value=''")
- qu'un script vérifie que la valeur du textarea est bien la valeur par défaut : si c'est la valeur par défaut, elle s'efface, si c'est une autre valeur, elle ne s'efface, car il s'agit d'un début de commentaire tapé.

Voici le script avec lequel je me bats, pourriez-vous m'aider à le faire fonctionner ?

Code : Tout sélectionner

<script language="javascript"> function check_value() { if(this.value != 'Votre commentaire ici... Tout commentaire jugé désobligeant (flamming, attaque personnelle) ou rempli de fautes d\'orthographe (SMS-style) sera supprimé.') this.value = ''; } </script> <textarea name="comment" cols="65" rows="6" class="input-textarea" onFocus="check_value()"> Votre commentaire ici... Tout commentaire jugé désobligeant (flamming, attaque personnelle) ou rempli de fautes d'orthographe (SMS-style) sera supprimé.</textarea>

Re: [ onFocus ] vider un textarea

Posté : 24 mai 2006, 16:24
par starkeus

Code : Tout sélectionner

function check_value(object) { if(object.innerHTML == 'Votre commentaire ici... Tout commentaire jugé désobligeant (flamming, attaque personnelle) ou rempli de fautes d\'orthographe (SMS-style) sera supprimé.') object.innerHTML = ''; } <textarea name="comment" cols="65" rows="6" class="input-textarea" onFocus="check_value(this)">Votre commentaire ici... Tout commentaire jugé désobligeant (flamming, attaque personnelle) ou rempli de fautes d'orthographe (SMS-style) sera supprimé.</textarea>
Mais bon est-ce bien nécessaire? et attention aux retours chariots ;)

Posté : 24 mai 2006, 17:00
par VaN
ça n'a pas l'air de marcher.
Oui je trouve cela nécessaire, de façon à ce que quelqu'un qui a commencé à écrire un commentaire de plusieurs lignes ne doivent pas les retaper, si jamais il reclic par erreur dans la textarea.

Je crois que cela ne marche pas à cause des retours chariots justement, comment corriger ça ? je voudrais garder le saut de ligne à l'intérieur du textarea. comment indiquer le saut de ligne dans le script JS ?

Posté : 24 mai 2006, 17:37
par starkeus
Je crois que cela ne marche pas à cause des retours chariots justement, comment corriger ça ? je voudrais garder le saut de ligne à l'intérieur du textarea. comment indiquer le saut de ligne dans le script JS ?

Code : Tout sélectionner

function check_value(object) { if(object.innerHTML == 'Votre commentaire ici...\nTout commentaire jugé désobligeant (flamming, attaque personnelle) ou rempli de fautes d\'orthographe (SMS-style) sera supprimé.') object.innerHTML = ''; } <textarea name="comment" cols="65" rows="6" class="input-textarea" onFocus="check_value(this)">Votre commentaire ici... Tout commentaire jugé désobligeant (flamming, attaque personnelle) ou rempli de fautes d'orthographe (SMS-style) sera supprimé.</textarea>
Chez moi cela fonctionne :)

Posté : 25 mai 2006, 11:23
par Ryle
Mais pourquoi du innerHTML alors qu'on travail sur un textarea ??!! le problème de ton code initiale, c'est que dans ta fonction, la référence à this est inconnue, il faut lui passer le champ en argument :

Code : Tout sélectionner

<script language="javascript"> function check_value(field) { if(field.value == 'Votre commentaire ici...\nTout commentaire jugé désobligeant (flamming, attaque personnelle) ou rempli de fautes d\'orthographe (SMS-style) sera supprimé.') field.value = ''; } </script> <textarea name="comment" cols="65" rows="6" class="input-textarea" onFocus="check_value(this)">Votre commentaire ici... Tout commentaire jugé désobligeant (flamming, attaque personnelle) ou rempli de fautes d'orthographe (SMS-style) sera supprimé.</textarea>
Attention également, si tu met un retour à la ligne après le tag <textarea> et avant ta chaine, elles ne seront pas identiques lors de la comparaison... Le mieux reste de mettre ton texte dans une variable javascript et de l'utiliser aux deux endroits pour être sur qu'elles seront les mêmes

Posté : 26 mai 2006, 10:52
par starkeus
Mais pourquoi du innerHTML alors qu'on travail sur un textarea ??!!
Bah moi j'ai eu des soucis avec certaines versions d'IE au boulot donc voilà la raison de l'innerHTML.