web-dev-qa-db-fra.com

SummerNote insertHtml

J'ai un sélecteur de "modèle", qui permet aux gens de changer le "text/html" de la textarea actuelle.

Ainsi, lorsqu'ils changent de modèle, je dois mettre à jour le code Summernote HTML. Je vois la méthode pour (insertText), mais cela ne fonctionne pas pour HTML. 

Existe-t-il une solution pour la version HTML?

Je pensais qu'il y avait une solution .code (), mais cela ne semble pas fonctionner? .__ Je reçois une erreur, "Pas une fonction"

Toute aide serait grandement appréciée!

$('.dialogMessageArea').summernote({
            height:'230px',
            focus:true,
            toolbar: [
                ['style', ['bold', 'italic', 'underline', 'clear']],
                ['fontsize', ['fontsize']],
                ['para', ['ul', 'ol', 'paragraph']],
                ['table', ['table']],
                ['misc', ['fullscreen','undo','redo']]
            ]
        });

        $(document).on('change', '.messageTemplate', function() {
            var templateId = $(this).selected().attr('value');
            if(templateId) {
                $.ajax({
                    type: "POST",
                    dataType: "json",
                    url: '/cont/templates/GetTemplate',
                    data: {'templateId': templateId},
                    success: function (data) {
                        $('.subjectMessage').val(data.results[0].subject);
                        if(data.results[0].template) {
                            $('.dialogMessageArea').code(data.results[0].template);
                        }
                    },
                    error: function () {
                        alert('We were not able to get your template');
                    }
                });
            }
        });

console.log($('.dialogMessageArea'));
console.log("<b>Welcome</b><h3>hello world</h3>");

 enter image description here

13
Justin

Selon l’API ( http://summernote.org/getting-started/#basic-api ),

pour changer la valeur de wysiwyg, vous devez utiliser la fonction summernote avec la chaîne 'code' en premier paramètre et votre contenu en seconde 

Comme ça :

$('.dialogMessageArea').summernote('code', data.results[0].template);
31
.summernote('pasteHTML', '<b>inserted html</b> ');
15
Step

Cela devrait réellement fonctionner

$('.dialogMessageArea').code('some value you want'); 

REMARQUE:

HTML dans la fonction code() doit être une chaîne. Je ne pense pas que cela fonctionnera si vous essayez d'insérer un contenu invalid HTML.

Essayez de faire ceci :

Créez un div caché puis, dans votre méthode AJAXsuccess, essayez d'insérer les données à partir de AJAX puis récupérez-les à l'aide de la fonction text() de jquery.

<div style="display:none;" id="hidden_div">


            success: function (data) {
                $('.subjectMessage').val(data.results[0].subject);
                if(data.results[0].template) {
                    $('#hidden_div').html(data.results[0].template);
                    $('.dialogMessageArea').code($('#hidden_div').text());
                }
            },
1
Abhinav

Si vous ne souhaitez pas remplacer tout le contenu de la note, vous pouvez utiliser la commande insertHTML à partir de execCommand WebAPI. 

Summernote étant basé sur execCommand WebAPI , nous pouvons utiliser directement ses ressources . Le moyen le plus simple d’ajouter un contenu HTML à la sommation peut donc utiliser le paramètre insertHtml comme ceci:

document.execCommand('insertHtml', null, '<p>My text <span style="color:red;">here</span></p>');
1
Marcel Kohls