web-dev-qa-db-fra.com

Comment obtenir le texte brut de l'éditeur Summernote?

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?

11
John Smith

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, "");
13
Alvaro Montoro

Essayez ceci: 

var plainText = $($("#summernote").code()).text()

EDIT: Dans les nouvelles versions, vous devez utiliser ceci à la place:

var plainText = $($("#summernote").summernote("code")).text()
18
Dilshod Zopirov

tu peux utiliser ça

   var code = $("#editor").code();
var text = code.replace(/<p>/gi, " ");
var plainText= $("<div />").html(text).text();
3
Ali panahiyan

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.

2
Toms Tony

Je devais vérifier si le textarea avait du contenu. Cela a fait le tour:

$($("#summernote").code().replace(/&nbsp;|<br>/g, ' ')).text().trim() == ''
0
Glauco A. Amigo