Question

J'utilise cette fonction, pour soumettre le formulaire en arrière-plan, avec des messages personnalisés. Il fonctionne parfaitement, à l'exception des champs textarea. J'ai lu que la fonction serialize a des problèmes avec son ex. linebreaks.

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

Le textarea est un markItUp! zone de l'éditeur.

Était-ce utile?

La solution

Comme indiqué ici: 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 cela ne fonctionne pas, urlencode manuellement les données textarea:

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

Et si vous souhaitez envoyer d'autres contenu du formulaire (note: ne donne pas le textarea un « nom » ici, juste une carte d'identité!):

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

Autres conseils

Une pensée (si utilisation standard de jQuery serialize ne fonctionne pas) est que le code markItUp prend que textarea et faire quelque chose de fantaisie avec lui pour qu'il n'agit même pas comme un textarea plus. Est-il possible dans l'API markItUp pour récupérer les données peut-être?

Voici main_post_txt l'id de l'élément de zone de texte HTML que vous utilisez et jquery vous pouvez obtenir facilement sa valeur en utilisant

var post_text = $("#main_post_txt").serialize();  
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top