La communauté ALL HTML c'est 58009 membres à ce jour dont 1 inscrits aujourd'hui et 30 depuis une semaine.

  • imprimer
  • aide

Forum de discussions « Javascript - DHTML - VBScript »

Retrouvez les publications relatives à ces discussions dans notre rubrique javascript.

Retour à la ligne incrémenté dans un textarea (avec KeyPress)

liste des forums liste des discussions Participer à la discussion

Photo de NightArctica Message publié le mercredi 12 mars 2008 à 15 h 47 par NightArctica. Guillaume
Hi all,
j'ai un problème tout simple (mais que je n'arrive pas à résoudre, je dois être trop compliqué ;-)) :

Je veux incrémenter chaque ligne de mon textarea.
A chaque fois que j'appuie sur la touche Entrée, je veux que non seulement il passe à la ligne mais qu'en plus, il ajoute 3 tirets au début de la nouvelle ligne.

Ex :
----
Dans mon textarea (name="traitement") :
Bonjour <- J'appuie sur Entrée ---Nouvelle ligne

J'ai trouvé la solution :
<textarea name="traitement" cols="100" rows="12" onKeyPress="if(event.keyCode == 13) { document.generateur.traitement.value+='\n---' }"></textarea>

Seulement voilà, quand je fais ça, il passe bien à la ligne, il affiche bien les --- mais il repasse une ligne derrière !

Je n'arrive pas à le faire rester sur la ligne des ---. J'ai essayé un focus() mais ça ne change rien (ou alors je le place mal)

Merci de votre aide, ça doit être un truc tout bête.
Photo de pchlj Message publié le mercredi 12 mars 2008 à 16 h 52 par pchlj. no comment !
salut...

je sais pas comment mais l'explication elle est oute bête

dans un textarea le fait d'appuyer sur entrée ... insère un \n

ton action se fait avant donc en gros c'est comme si tu faisais \n---\n

alors je sais aps comment revenir en arrière... mais un truc qui ferais ça ça serait pas mal

passe ton onkeypress en fonciton

function textreturn
{
if(event.keyCode==13) //pour rappel ne fonctionne normalement que sous windows
{
document.generateur.traitement.value+='\n---';
remettredanslaxe();
}
}

function remettredanslaxe()
{
document.generateur.traitement.value=document.generateur.traitement.value.substring(0,eval(document.generateur.traitement.value.lenght - 2));
}

en gros la deuxième fonction prend tout le texte le remet dans le textarea mais sans les deux derniers caractères soit le \n automatique...

pas sur que ça fonctionne mais si oui hésite pas à le dire ici en même temps que tu mettra le post en résolu :D
Photo de rbinse Message publié le mercredi 12 mars 2008 à 16 h 58 par rbinse.
Bonjour,

En fait, tu dois utiliser l'évènement onKeyUp. Ton retour chariot est alors ajouté à ton champ avant l'appel à ton code javascript. Pour éviter d'avoir le retour chariot que tu as tapé dans ton textarea, tu dois enlever le dernier caractère de ton textarea (ton \n en fait)

<html lang="en"> <head> <title>TextArea</title> <script type="text/javascript"> function ajouteTiret(e){ if(e.keyCode == 13) { var s = document.generateur.traitement.value.substr(0,document.generateur.traitement.value.length-1)+'\n---'; document.generateur.traitement.value = s; } } </script> </head> <body> <form name="generateur"> <textarea name="traitement" cols="100" rows="12" onKeyUp="ajouteTiret(event)"></textarea> </form> </body> </html>
Photo de NightArctica Message publié le jeudi 13 mars 2008 à 10 h 22 par NightArctica. Guillaume
Bonjour,
Merci pour vos réponses.
La solution de Rbinse fonctionne à merveille.

J’ai quand même testé la solution de Pchlj (tu voulais savoir si ton code fonctionnait ;-) et pour te remercier de m’avoir répondu), en fait, au moment de taper la touche Entrée, il passe à la ligne et revient automatiquement au début ^^ (donc l’idée était bonne mais il faut modifier 2, 3 trucs dans la fonction)

Merci à vous deux, je passe le pb en résolu.

A+ !

liste des forums liste des discussions Participer à la discussion

Vous devez obligatoirement vous identifier en tant que membre pour participer à cette discussion.

ACCÉS COMMUNAUTÉ

Rejoignez ALL HTML

Publiez vos articles, actualités, communiqués ... Donnez votre avis, partagez votre réseau, rencontrez d'autres membres et participez à la vie de la communauté.

Les 5 dernières discussions

agenda