2011-12-22 16 views
15

Estoy usando $("#text").val() para obtener texto del campo textarea y enviar a través de ajax, pero los saltos de línea (quiero decir \r\n en textarea) desaparecen ... ¿Por qué podría ser y cómo prevenirlo?La función jQuery .val() limpia ' r n' de textarea - ¿por qué?

Gracias!

+1

quizás tratar .prop ('valor'), no estoy seguro de si iba a funcionar lo mismo que .val(), pero que es un poco tonto para despojar a eso. – Matt

Respuesta

19

Tomado de the documentation for val():

Nota: En la actualidad, el uso de .val() en los elementos de área de texto tiras de carro caracteres de retorno desde el valor reportado navegador. Cuando este valor es enviado al servidor a través de XHR, sin embargo, se conservan los retornos de carro (o agregados por los navegadores que no los incluyen en el valor bruto). A solución para este problema se puede lograr utilizando un valHook como sigue:

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

Adición del fragmento anterior a su javascript anulará el comportamiento predeterminado de val() para áreas de texto y se preservar espacios en blanco.

See here for jsFiddle.

+0

'html()' eliminado incluso el texto ... –

+0

Lo hice: '$ (" # text "). Html()'. –

+0

cómo usarlo en la práctica? primero defina valHooks y luego use 'val()' o qué? –

Cuestiones relacionadas