par exemple, voici ce que j'ai écrit:
sdf
42342
xxcv
.code()
le convertit en sdf<br>42342<br>xxcv
ou autre chose:
[{"_type":"ServerOperation","operationType":"ANNOUNCE"}]
est devenu
<span class="message_content">[{"_type":"ServerOperation","operationType":"ANNOUNCE"}]</span>
comment obtenir le texte pur/clair?
Vous pouvez appliquer l'une des deux premières réponses à la question JavaScript: comment supprimer les balises HTML d'une chaîne? , après le .code()
pour enlever les balises.
La réponse de ReactiveRaven (le garder sur une seule ligne) me convient parfaitement:
cleanText = $("#summernote").code().replace(/<\/?[^>]+(>|$)/g, "");
Par exemple, avec [{"_type":"ServerOperation","operationType":"ANNOUNCE"}]
:
$("#summernote").code()
renvoie
<p>[{"_type":"ServerOperation","operationType":"ANNOUNCE"}]<br></p>
$("#summernote").code().replace(/<\/?[^>]+(>|$)/g, "")
renvoie
[{"_type":"ServerOperation","operationType":"ANNOUNCE"}]
sans balises.
Et si vous souhaitez conserver le retour à la ligne, vous pouvez remplacer </p>
et <br>
par un \n
avant d'appliquer la solution spécifiée dans la question liée:
$("#summernote").code()
.replace(/<\/p>/gi, "\n")
.replace(/<br\/?>/gi, "\n")
.replace(/<\/?[^>]+(>|$)/g, "");
Essayez ceci:
var plainText = $($("#summernote").code()).text()
EDIT: Dans les nouvelles versions, vous devez utiliser ceci à la place:
var plainText = $($("#summernote").summernote("code")).text()
tu peux utiliser ça
var code = $("#editor").code();
var text = code.replace(/<p>/gi, " ");
var plainText= $("<div />").html(text).text();
versions plus récentes
var contents = $('#summernote').summernote('code');
var plainText = $("<p>" + contents+ "</p>").text();
Ajouter une balise factice
résout le manque de formatage.
Je devais vérifier si le textarea avait du contenu. Cela a fait le tour:
$($("#summernote").code().replace(/ |<br>/g, ' ')).text().trim() == ''