Javascript / Fonction après création textarea

Résolu/Fermé
jemakaku Messages postés 11 Date d'inscription jeudi 22 novembre 2007 Statut Membre Dernière intervention 9 juin 2009 - 7 juin 2009 à 13:30
jemakaku Messages postés 11 Date d'inscription jeudi 22 novembre 2007 Statut Membre Dernière intervention 9 juin 2009 - 9 juin 2009 à 15:26
Bonjour,
Actuellement débutant en javascript, j'ai honteusement copié du code un peu partout pour arriver à créer une page html destinée à l'étude de mes cours.

RESUME :
Il faudrait que la taille de mes textarea s'adapte automatiquement à leur contenu au moment de leur création.
Actuellement ca fonctionne très bien mais il faut cliquer dessus. (code plus bas)

DETAILS :
Objectif (pas important) : pouvoir afficher/cacher par simple clic le "contenu" d'une hiérarchie (que je crée moi-même)

Par soucis de facilité, j'utilise des textarea pour entrer du texte brut sans devoir me casser la tête avec des <br />

Ces textarea sont crées actuellement avec une taille par défaut et j'aimerais que leurs tailles s'adaptent automatiquement à la création en fonction du contenu par défaut.

La fonction qui adapte le contenu existe et fonctionne très bien. Le problème c'est que pour l'instant il faut cliquer sur le textarea pour qu'elle s'exécute.

J'ai essayé avec un "oninput" pour que ce soit à la création mais hélas, manifestement le contenu est rajouté APRES la création, ce qui fait que le textarea ne s'y adapte pas. (onpropertychange ne fonctionne pas non plus)

CODE :
<html>
<head>

<script type="text/javascript">
function fitToText()
{
 if (this.scrollHeight>this.clientHeight)
 {
  this.style.height=(this.scrollHeight+20)+"px";
 }
 else
 {
  this.style.height="10px";
  this.style.height=(this.scrollHeight+20)+"px";
 }
}

function aff(objet)
{ 
	if(document.getElementById(objet).style.display == "block")
	{ 
		document.getElementById(objet).style.display = "none";
	}
	else
	{ 
		document.getElementById(objet).style.display = "block";
	}
}
</script> 

</head>
<body>

<p><a href=javascript:aff('1.1');>Partie 1 : PROCESSUS (Généralités)</a></p>
<div id="1.1";>
	<p><a href=javascript:aff('1.1.1');>Définition / ce qu'on processus comporte (3) / Les infos concernant un processus. (7)</a></p>
	<div id="1.1.1";>
		<textarea id="1.1.1" onclick="fitToText.call(this)">contenu
du
texte
area
qui
est
censé
s'adapter
a
sa création</textarea>
	</div>
</div>
</body>
</html>


Merci d'avance pour votre aide! :-)

Jema
A voir également:

5 réponses

hamzafes Messages postés 243 Date d'inscription lundi 26 juin 2006 Statut Membre Dernière intervention 4 mai 2013 54
7 juin 2009 à 15:17
Utiises onload de la balise body:


<body onload="fitToText('montexte')">

....

<textarea name="montexte" id="montexte"> </textarea>
....

</body>

<script language="javascript">

function fitToText(balise_id)
{
balise=document.getElementById(balise_id);
//....
// balise doit remplacer le this
//....
}

</script>


Allah mo3ine
0
jemakaku Messages postés 11 Date d'inscription jeudi 22 novembre 2007 Statut Membre Dernière intervention 9 juin 2009 1
7 juin 2009 à 16:30
Merci pour ta réponse. J'ai appris quelque chose. :-)

Hélàs ca ne fonctionne pas. Ca agit exactement de la même manière qu'avec l'utilisation de "oninput" dans le "textarea". C'est à dire qu'il exécute bien la fonction, mais avant de remplir le "textarea" et donc pour la taille il met presque rien vu que quand il fait le calcul, c'est vide. :-(

Merci d'avoir essayé. :-)
0
jemakaku Messages postés 11 Date d'inscription jeudi 22 novembre 2007 Statut Membre Dernière intervention 9 juin 2009 1
8 juin 2009 à 23:35
J'ose un petit up. :-)
0
hamzafes Messages postés 243 Date d'inscription lundi 26 juin 2006 Statut Membre Dernière intervention 4 mai 2013 54
9 juin 2009 à 13:18
tu peux faire autre chose,
tu appel la fonction après le code du textarea, comme ça:

<textarea name="montexte" id="montexte">

....

</textarea>

<script language="javascript">

fitToText("montexte"); /* appel de la fonction fitToText, normalement le textarea a déjà sont contenu */


function fitToText(balise_id)
{
//....
}

</script>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jemakaku Messages postés 11 Date d'inscription jeudi 22 novembre 2007 Statut Membre Dernière intervention 9 juin 2009 1
9 juin 2009 à 15:26
Ca marche! :-)

Bon, pas directement, c'est un peu compliqué mais TES propositionS m'ont permis de trouver le problème.

En fait le "oninput" aurait du marcher, donc ta première proposition aurait du marcher aussi. Sauf que tout est caché par défaut à la création du fichier et c'est ca qui empêchait l'exécution correcte de la fonction.

Maintenant, grâce à ta seconde proposition, j'ai pu tester en réaffichant avant que le textarea ne soit créé et là, ta première proposition fonctionne du coup très bien (très pratique d'ailleurs :-)).

Merci beaucoup!

Jema
0