2010-11-06 21 views
6

Estoy usando esta función, para enviar formularios en segundo plano, con mensajes personalizados. Funciona perfectamente, excepto con los campos textarea. He leído que la función de serialización tiene problemas con ej. saltos de línea.jQuery serialize error con textarea archivada

$(function() { 
     $("#comment_form").validate({ submitHandler: function(form) { 
     $.post('/u/r/l/', $("#comment_form").serialize(), 
function(data) { 
      $('#comment_container').html(data); 
       }); 
      } 
     }); 

¡The textarea es una marca! área del editor.

+0

favor formatear el código para utilizar saltos de línea y tabulaciones :) –

+0

que he hecho, el editor arruinó. Pero thx;) – wintercounter

+0

Eche un vistazo aquí, puede ayudar: http://api.jquery.com/serialize/#comment-67394779 – DaiYoukai

Respuesta

2

como se indica aquí: http://api.jquery.com/serialize/#comment-67394779

function keepLB (str) { 
    var reg=new RegExp("(%0A)", "g"); 
    return str.replace(reg,"%0D$1"); 
} 

$(function() { 
    $("#comment_form").validate({ submitHandler: function(form) { 
    $.post('/u/r/l/', keepLB($("#comment_form").formSerialize()), function(data) { 
     $('#comment_container').html(data); 
    }); 
    } 
}); 

Si esto no funciona, manualmente urlencode los datos de área de texto:

$(function() { 
    $("#comment_form").validate({ submitHandler: function(form) { 
    $.post('/u/r/l/', "textareadata="+escape($("#mytextarea").value), function(data) { 
     $('#comment_container').html(data); 
    }); 
    } 
}); 

Y si también desea enviar otros contenidos de formulario (nota: Don 't dan el área de texto un "nombre" aquí, sólo un id):

$(function() { 
    $("#comment_form").validate({ submitHandler: function(form) { 
    $.post('/u/r/l/', 
    $("#comment_form").formSerialize()+"&textareadata="+escape($("#mytextarea").value), 
    function(data) { 
     $('#comment_container').html(data); 
    }); 
    } 
}); 
+0

No envía mi comentario en absoluto: S – wintercounter

+0

@wintercounter: ¿Cuál? El segundo solo envía el contenido de textareas. – thejh

+0

Tengo muchos campos ocultos también generados por el CMS, por lo que no estaría bien. Si el nombre de textareas es "comment", entonces esto: debería imprimir la solicitud jQuery'ed? – wintercounter

0

Una idea (si el uso estándar de jQuery serialize no funciona) es que el código de marcación está tomando esa área de texto y hace algo especial con ella, por lo que ya no actúa como un área de texto. ¿Hay alguna forma en la API de Markitup para recuperar los datos, tal vez?

+0

Seguramente tiene, pero no sabe cómo usar: S – wintercounter

+0

Intentó sin markitup con un área de texto simple. No funcionó. – wintercounter

0

aquí main_post_txt es el id html del área de texto que se está utilizando y en jQuery se puede conseguir fácilmente su valor mediante el uso de

var post_text = $("#main_post_txt").serialize();