Reputation: 1309
I got a TinyMCE editor instance running. And
tinyMCE.activeEditor.insertContent('<div class="row"><div class="col-md-6"></div><div class="col-md-6"></div></div><div class="row"><div class="col-md-12"></div></div>');
This should generate :
<div class="row"><div class="col-md-6"></div><div class="col-md-6"></div></div><div class="row"><div class="col-md-12"></div></div>
But instead of that it is generating:
<div class="row"> </div>
<div class="row"> </div>
When I am doing it step by step :
tinyMCE.activeEditor.insertContent('<div class="row"> ');
tinyMCE.activeEditor.insertContent('<div class="col-md-6"> </div>');
tinyMCE.activeEditor.insertContent('<div class="col-md-6"> </div>');
tinyMCE.activeEditor.insertContent(' </div>');
tinyMCE.activeEditor.insertContent('<div class="col-md-12"> </div></div>');
It gets me an even more curious result
<div class="row">
<div class="col-md-6">
<div class="col-md-6">
<div class="col-md-12"> </div>
</div>
</div>
</div>
What am I missing??? Should I use another tag instead of insertContent?
Trying inyMCE.execCommand also does not work.
tinyMCE.execCommand('mceInsertContent',false,'<div class=row><div class=col-md-6></div><div class=col-md-6></div></div><div class=row><div class=col-md-12></div></div>');
Upvotes: 1
Views: 6753
Reputation: 927
insertContent
is intended for plain text. setContent
is intended for HTML. However setContent
only allows you to add one level of HTML at a time. A way around this is to use dom.add()
. This will allow you create a parent element and allows you add children nodes to it.
HTML
<form>
<textarea></textarea>
</form>
JS
//get inner element 'col-md-6'
//number is how many elements
function getColMd6(number){
var html = "";
for(var i = 0; i < number; i++){
html += '<div class="col-md-6"></div>';
}
return html;
}
//get inner element 'col-md-12'
function getColMd12(number){
var html = "";
for(var i = 0; i < number; i++){
html += '<div class="col-md-12"></div>';
}
return html;
}
tinymce.init({
selector: 'textarea'
});
//Last parameter lets you specify extra inner html
tinymce.activeEditor.dom.add(tinymce.activeEditor.getBody(), 'div', {class: 'row'}, getColMd6(2));//or just plain html string at last param
tinymce.activeEditor.dom.add(tinymce.activeEditor.getBody(), 'div', {class: 'row'}, getColMd12(1));//or just plain html string at last param
Here is a example of it working DEMO
Upvotes: 3