2010-11-06 13 views
6

Używam tej funkcji, aby przesłać formularz w tle, z niestandardowymi wiadomościami. Działa doskonale, z wyjątkiem pól textarea. Czytałem, że funkcja serializuje ma problemy z ex. podziały wierszy.jQuery serializuje błąd z tekstem złożonym

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

The textarea jest markitup! obszar edytora.

+0

Proszę formatowania kodu użyć nowej linii i tabulacje :) –

+0

ja robiłem, redaktor zniszczyła. Ale thx;) – wintercounter

+0

Zajrzyj tutaj, może to pomóc: http://api.jquery.com/serialize/#comment-67394779 – DaiYoukai

Odpowiedz

2

Jak stwierdzono tutaj: 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); 
    }); 
    } 
}); 

Jeśli to nie zadziała, ręcznie urlencode danych textarea:

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

A jeśli chcesz wysłać do innych treści formularza (uwaga: don „t dać textarea "nazwy", po prostu 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

Nie przesyła mojego komentarza w ogóle: S – wintercounter

+0

@wintercounter: Który? Drugi wysyła tylko treść tekstową. – thejh

+0

Mam wiele ukrytych pól zbyt generowanych przez CMS, więc nie byłoby dobrze. Jeśli nazwa pola tekstowego to "komentarz", to: powinien wydrukować żądanie jQuery? – wintercounter

0

Jedna myśl (jeśli standardowe użycie serializacji jQuery nie działa) polega na tym, że kod markitup zabiera to pole tekstowe i robi z nim coś wyjątkowego, tak że nie działa już jak tekst. Czy jest jakiś sposób w Markitup API do pobrania danych?

+0

Z pewnością ma, ale nie ma sposobu użycia: S – wintercounter

+0

Próbowano bez oznaczenia znacznikiem z prostym tekstem. To nie zadziałało. – wintercounter

0

Tutaj main_post_txt jest id HTML elementu obszaru tekstu, który używasz w jQuery można łatwo dostać jego wartość za pomocą

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