我使用所见即所得的编辑器“ summernote”和codeigniter。我想在工具栏上添加自己的按钮,以在单击时插入特定的文本。 summernote documentation中描述了这种情况。
夏季提示:
$('#model_txt').summernote({
height: 250,
toolbar: [
['style', ['bold', 'italic', 'underline', 'clear']],
['font', ['strikethrough', 'superscript', 'subscript']],
['fontsize', ['fontsize']],
['color', ['color']],
['para', ['ul', 'ol', 'paragraph']],
['height', ['height']]
]
});
但是我分别获得按钮名称,它们是从数据库中单击时插入的文本。我通过ajax调用获取数据,该调用调用了一个PHP函数,该函数从查询中打印数据。
AJAX呼叫:
var all_vars = null;
$.ajax({url: "get_vars", success: function(result){
all_vars = result.split(";");
});
现在我有一个包含名称的数组(例如:all_vars[0]
)。
但是我不知道如何将名称作为按钮插入工具栏...可以帮我吗?
有人可以帮我吗?我用JS函数eval()尝试了此方法,它可以工作,但我认为它不是最佳解决方案...
“ 127.0.0.1/create_var_buttons”上的PHP函数动态创建JS代码。
<script>
$(document).ready(function() {
var resturl = 'http://127.0.0.1/create_var_buttons';
$.ajax({
url: resturl,
success: function(data){
eval(data);
}
});
});
答案 0 :(得分:1)
我以前也遇到过同样的需求,并且这样做是这样的:
我必须声明一个变量来保存summernote的工具栏数组:
var工具栏= [ ['style',['bold','italic','underline','clear']], ['insert',['picture','link']], ['misc',['undo','redo','codeview']], ['para',['ul','ol','paragraph']], ['fontsize',['fontsize','height']], ['color',['color']], ['forecolor',['forecolor']], ['custom',['forcarJustificar']] ];
将数据保存到summernotes的“ buttons”属性的另一个方法:
var opt_btns_custom = { forcarJustificar:forcarJustificar };
另一个变量,用于保存整个summernote的选项:
var sm_options = { 高度:altura, 工具栏:工具栏, 按钮:opt_btns_custom, 回调:{} }
然后,我将下面需要编写的每个按钮创建为Ajax的.done()函数:
function addBtnText(b_content,b_tooltip,text){
var sm_botao_custom = function (context) {
var ui = $.summernote.ui;
options = {
contents: b_content,
tooltip: b_tooltip,
click: function () {
context.invoke('editor.insertText', text);
}
}
var button = ui.button(options);
return button.render();
}
i = Math.floor(Math.random() * (1000 - 1 + 1)) + 1;
toolbar.push(['custom', ['sm_botao_custom_'+i]]);
opt_btns_custom['sm_botao_custom_'+i] = sm_botao_custom;
//Restart SM to apply the created buttons
$('#d_summernote').summernote('destroy');
$('#d_summernote').summernote(sm_options);
}
OBS:我使用随机数(i)避免与SM内的按钮发生冲突。