[ onFocus ] vider un textarea

VaN
Mammouth du PHP | 1107 Messages

24 mai 2006, 15:50

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>

Eléphant du PHP | 441 Messages

24 mai 2006, 16:24

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 ;)
Futures Stars par ici >> www.apel-doorn.com
fan d'info et du ... PSG !! :D
Apprendre, comprendre et maîtriser telle est ma devise!
Fan inconditionnel de netvibes

VaN
Mammouth du PHP | 1107 Messages

24 mai 2006, 17:00

ç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 ?

Eléphant du PHP | 441 Messages

24 mai 2006, 17:37

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 :)
Futures Stars par ici >> www.apel-doorn.com
fan d'info et du ... PSG !! :D
Apprendre, comprendre et maîtriser telle est ma devise!
Fan inconditionnel de netvibes

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

25 mai 2006, 11:23

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

Eléphant du PHP | 441 Messages

26 mai 2006, 10:52

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.
Futures Stars par ici >> www.apel-doorn.com
fan d'info et du ... PSG !! :D
Apprendre, comprendre et maîtriser telle est ma devise!
Fan inconditionnel de netvibes