Newsgroup: it.comp.lang.javascript
Titolo: Problema con textarea (piccolo)

Ciao a tutti,
colgo l'occasione per ringraziare Riccardo per lo spunto di ieri, mi è stato
molto d'aiuto, e vorrei approfittare di questa occasione a che ci sono per
chiedere se è possibile fare in modo di mantenere la formattazione
all'interno di una textarea.
Ho notato che se passo in input i dati già formattati e li visualizzo nella
textarea tutto è ok, mentre se scrivo questi dalla textarea e li invio
vengono visualizzati tutti di fila, ovvero si perde la formattazione
originale.
In questo caso, per formattazione intendo semplicemente il mantenere gli "a
capo" e gli spazi. Nulla di piu complicato.
Come si può ovviare a questo problema? grazie in anticipo a chi mi risponde.
Cooper.
-- 
BlueWare Web Agency
   [web] 
http://www.blueware.it
   [icq] 146781935

 originale.
Ma come li rivisualizzi?
Li prendi da un database? Se sģ registrali gią formattati...
-- 
"E' l' ignoranza che crea l'intolleranza
 di gente cieca e senza coscienza"
									  S.S.S.
--


No, spetta, mi spiego meglio, in ordine cronologico...
a) inserisco i dati in una textarea;
b) clicco sul modulo e apro un altro modulo e nella textarea di quest'ultimo
ricopio il contenuto della textarea precedente (.........si vede
correttamente, ovvero con gli "a capo" e gli spazi etc della precedente);
c) clicco nuovamente sul modulo e nell'altra pagina stampo il contenuto
della textarea (non all'interno di una textarea, ma fuori, esempio come una
stringa... (........in questo caso il contenuto viene messo tutto di fila,
senza piu considerare i ritorni a capo etc).
Il problema quindi che volevo risolvere era appunto mantenere la
formattazione di cui al punto b anche al punto c.


 senza piu considerare i ritorni a capo etc).
Quindi dentro un tag?
fai un replace di \n con <br/>



Niente da fare non funziona, provo a fare un esempio completo da una
textarea (name="text") inserisco il testo e tramite POST lo rilevo:
$messaggio = $_POST["name"]
ora, se io scrivo.........
<textarea name="name" etc etc> $messaggio </textarea>
il testo di $messaggio viene visualizzato correttamente, con tutti gli spazi
e ritorni a capo; se invece scrivo:
.....etc etc <td> $messaggio </td> ....... etc etc
il messaggio lo visualizza sempre ma stavolta senza rispettare i ritorni a
capo etc... il mio problema chiaramente è che in quest'ultimo caso deve
continuare a rispettare i ritorni a capo.
Seguendo il tuo consiglio, ho provato con:
    $messaggio = str_replace ('<\n>', '<br/>', $messaggio);
ma non sortisce alcun effetto, lascia tutto invariato (anche se provo a
invertire di posto i primi due parametri).
Ho fatto la prova anche lavorando direttamente in javascript, ma nessun
risultato :(
Qualche consiglio? Grazie ancora per la pazienza.


invertire di posto i primi due parametri).
Non e' "<\n>" ma solo "\n", non si tratta di un tag ma di uno o piu'
caratteri a secondo del sistema operativo.
Prova questo:
$search[0]="/\r\n/";
$replace[0]="<br />";
$search[1]="/\r/";
$replace[1]="<br />";
$search[2]="/\n/";
$replace[2]="<br />";
$messaggio = preg_replace($search, $replace, $messaggio);
O in Javascript:
messaggio=messaggio.replace(/\n\r/g,"<br />");
messaggio=messaggio.replace(/\r/g,"<br />");
messaggio=messaggio.replace(/\n/g,"<br />");
'bye

     $messaggio = str_replace ('<\n>', '<br/>', $messaggio);
E da quando "<\n>" e' un tag HTML? :-)
Corretto: $messaggio = nl2br($messaggio);
o se proprio ti piace il replace:
$messaggio = str_replace ('\n', '<br />', $messaggio);
p.s.
Mantieni sempre uno spazio davanti allo slash di chiusura per br, hr, 
img, input etc. (v come l'ho scritto sopra).
Browser vecchi potrebbero non interpretare bene il tag (in pratica 
errare nel non considerare il carattere "non consentito" che e' appunto 
lo slash finale).
-- 
Ciao, Riccardo
------------------------------------------------------------------------
http://www.jsdir.com
  ---- Bring Your Site To Life!!!!
http://www.wmtools.it
 ---- WebMasterTools - Servizi per il tuo sito
http://www.dev2dev.it
 ---- La rete ha connesso nuove particelle - D2D006
------------------------------------------------------------------------
Per rispondere: togli i PUNTO .

 Corretto: $messaggio = nl2br($messaggio);



Ok, questa soluzione mi piace di più ^_^  funziona perfettamente. Grazie
mille a tutti voi :)
