Scroll barre qui remonte lorsqu'on ajoute du texte dans un textarea

[Résolu]
Signaler
Messages postés
17
Date d'inscription
lundi 9 juin 2008
Statut
Membre
Dernière intervention
21 juin 2010
-
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
-
Bonjour à tous,

j'espère que vous allez pouvoir m'aider.
J'ai bien cherché mais je n'ai pas trouvé de solution satisfaisante.
J'ai donc un textarea avec une scroll barre verticale (le texte pouvait être long).
L'utilisateur rempli le textarea en cliquant sur des boutons (un bouton écrit un texte prédéfini dans le textarea)
Or lors de ce clique, la barre remonte systématiquement. Je souhaiterais cependant qu'elle reste en position.

De quelle façon puis-je procéder ?

Merci d'avance pour vos réponses ^^

7 réponses

Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
18
Bonjour,
dans ta fonction d'insertion, en entrée
tu sauvegardes les positions des scrolls que tu restitues en fin de fonction...

//-------------------------------
function
insertion( where_, txt_){
  //-- Get Objet TEXTAREA

  var O_Dest = document.getElementById( where_);
   //-- Sauve la position du scroll
  var sLeft =
O_Dest.scrollLeft;
  var sTop = O_Dest.scrollTop;

  //... tu fais ce que tu as à faire ...//

  //-- Restaure la position du scroll

  O_Dest.scrollLeft = sLeft;
  O_Dest.scrollTop = sTop;

}
par exemple...
;O)
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
18
Bonjour,
Généralement la TEXAREA met le focus sur
la partie ajoutée, ce qui reste pratique pour voir l'évolution du contenu...

Pour palier à ton problème, si j'ai bien tout compris, il te faut lire la
position du scroll, scrollTop, avant
insertion, puis de la remettre après insertion.
;O)
Messages postés
17
Date d'inscription
lundi 9 juin 2008
Statut
Membre
Dernière intervention
21 juin 2010

Merci pour ta réponse.

J'ai essayé de chercher de ce côté là et j'ai donc fait ceci :

<SCRIPT LANGUAGE="JavaScript">
//-----------------
function scroll(){
var barre=document.getElementById(message).scrollTop;
return barre;
}

//-----------------
function scroll2(){
document.getElementById(message).scrollTop=scroll();
}

</SCRIPT>

<!--HTML-->

<textarea name="message" id="message" rows="40" cols="35" class="bb_area" tabindex="3" class="post" onchange="scroll2()" onselect="storeCaret(this);" onclick="mix(this);" onkeyup="storeCaret(this);"><?php if(isset($filename)){print $contents;}?></textarea>

Or je ne sais pas si mes fonctions sont correctes et à quel moment les appeler...

Merci
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
18
Bonjour,
une source qui peut peut-être t'aider
CURSEUR dans TEXTAREA
;O)
Messages postés
17
Date d'inscription
lundi 9 juin 2008
Statut
Membre
Dernière intervention
21 juin 2010

Merci. J'avais déjà vu ce code et je m'en été inspiré d'ailleurs. J'ai regardé les commentaires associé à ton code (bien pratique d'ailleurs ^^) et la réponse à mon problème semblerait se trouver ici :

http://www.developpez.net/forums/showthread.php?t=352200#post2151969

Mais je ne vois pas vraiment comment m'en servir.
Je dois l'appliquer d'abord pour récupérer la valeur initiale mais de quel façon ?

Et pour remettre la nouvelle valeur je le fais dans le onchange de ma textarea ?

Merci d'avance
Messages postés
17
Date d'inscription
lundi 9 juin 2008
Statut
Membre
Dernière intervention
21 juin 2010

Ca fonctionne !!!

Merci beaucoup pour ton aide !!!
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
18
Il n'en demeure pas moins qu'en remettant le focus
sur l'ajout le scroll devrait être automatique.
Le principal reste que cela
marche...
;O)