11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour, j'utilise javascript pour completer un formulaire mais le probleme qui se pose c'est que je n'arrive pas a completer un textarea avec des retours a la ligne...

Voici ce que je fait


echo"document.getElementById(\"commentaire\").innerHTML=\"test\";";

sa affiche correctement test

par contre

echo"document.getElementById(\"commentaire\").innerHTML=\"te

st\";";



N'affiche rien et fait bugger semble t'il.

Dans mon script j'ai une variable php a la place du mot test.

J'ai essayé de jouer sur l'attribut wrap mais ça marche pas.
Modifié par zacc (26 Nov 2006 - 23:08)
Bonjour,

En JavaScript, il faut matérialiser les sauts de ligne par \n, comme on le fait dans beaucoup d'autres langages.

Ce qui donne :
document.getElementById("commentaire").innerHTML="Ligne1\nLigne2\nLigne3";


Attention maintenant avec le php, car :
echo"document.getElementById(\"commentaire\").innerHTML=\"Ligne1\nLigne2\nLigne3\";";



Générera en réalité ce bout de code :
document.getElementById("commentaire").innerHTML="Ligne1
Ligne2
Ligne3";

Ce qui fera bien évidemment bugger le javascript avec un message d'erreur chaîne non terminée.
IL ne faut donc pas oublier de double-échapper :
echo"document.getElementById(\"commentaire\").innerHTML=\"Ligne1\\nLigne2\\nLigne3\";";


Maintennat si le contenu à inséerer se trouve dans une variable il faut transformer les sauts de ligne contenus dans cette variable en \n littéral. Pour cela, str_replace par exemple :
 $chaine = str_replace("\n", "\\n", $chaine); 

Ou pour ceux qui veulent être un peu plus puristes :
$chaine = preg_replace("#\r\n|\n|\r#s", '\n', $chaine);
Administrateur
zacc a écrit :
Merci beaucoup, ça fonctionne parfaitement avec le second code.

Bravo Smiley smile
Tu considères que ce sujet est [Résolu] ? Smiley cligne