2011-12-22 8 views
15

Sto usando $("#text").val() per ottenere il testo dal campo textarea e inviare tramite ajax, ma le interruzioni di riga (intendo \r\n nell'area di testo) scompaiono del tutto ... Perché potrebbe essere e come prevenirlo?La funzione jQuery .val() ripulisce ' r n' da textarea - perché?

Grazie!

+1

magari provare .prop ('valore'), non sono sicuro se avrebbe funzionato lo stesso di .VAL(), ma che è una specie di muto a nudo che fuori. – Matt

risposta

19

Tratto da the documentation for val():

Nota: Allo stato attuale, utilizzando .val() sugli elementi textarea strisce carrozza caratteri di ritorno dal valore riportato browser. Quando questo valore è inviato al server tramite XHR, tuttavia, i ritorni a capo vengono mantenuti (o aggiunti dai browser che non li includono nel valore grezzo). Un soluzione per questo problema può essere realizzato utilizzando un valHook come segue:

$.valHooks.textarea = { 
    get: function(elem) { 
     return elem.value.replace(/\r?\n/g, "\r\n"); 
    } }; 

Aggiungendo questo frammento di codice al file JavaScript sostituirà il comportamento predefinito di val() per textareas e conserveranno spazi.

See here for jsFiddle.

+0

'html()' rimosso anche il testo ... –

+0

Ho fatto: '$ (" # testo "). Html()'. –

+0

come usarlo sulla pratica? prima definisci valHooks e poi usa 'val()' o cosa? –