我在bootstrap上使用带有summernote的自定义按钮,通过以下操作:
那么,出了什么问题?
我想在回调函数中获取textarea id,以便具有动态性(参见最后一个函数)。
问题:我可以从上下文中获取textarea id吗?用另一种方式? (我在console.log(context)中找不到它;)
问题2:如何获得光标位置?我的链接被添加到第一位。
var summernote = {
run: function(id, type) {
if(type && type === 'full') {
this.full(id);
} else {
this.simple(id);
}
},
simple: function(id) {
// todo
},
full: function(id) {
var summernote_params = { height:300,
lang: 'fr-FR',
toolbar: [
['misc', ['undo', 'redo']],
['style', ['bold', 'italic', 'underline', 'clear']],
['font', ['superscript', 'subscript']],
['para', ['ul', 'ol']],
['mybuttons', ['docimage', 'docdocument']],
],
buttons: {
docimage: summernote.docImage,
docdocument: summernote.docDocument,
},
};
$('#'+id).summernote(summernote_params);
},
docImage: function(context) {
var ui = $.summernote.ui;
var button = ui.button({
contents: '<i class="fa fa-file-image-o"></i>',
tooltip: 'Insert image',
click: function () {
documents.run({filter:'image', callback:[summernote.docImageCallback, context]});
}
});
return button.render();
},
docImageCallback: function(context, doc) {
context.invoke('editor.insertImage', doc.url);
},
docDocument: function(context) {
var ui = $.summernote.ui;
var button = ui.button({
contents: '<i class="fa fa-file-o"></i>',
tooltip: 'Insert file',
click: function () {
documents.run({filter:'document', callback:[summernote.docDocumentCallback, context]});
}
});
return button.render();
},
docDocumentCallback: function(context, doc) {
// here i want to get id dynamically
$('#description').summernote('createLink', {
text: doc.name,
url: doc.url,
newWindow: true
});
},
}
和电话
<textarea id="description"></textarea>
<script>
summernote.run('description', 'full');
</script>
答案 0 :(得分:1)
所以我找到了解决每个问题的方法。
init中的params在上下文中是senndnd。要在上下文中获取id,我只需在init中添加它:
var summernote = {
...
full: function(id) {
var summernote_params = { id: id, // <-- set id in context, (cutsom data)
height: 300,
lang: 'fr-FR',
toolbar: [
['misc', ['undo', 'redo']],
['style', ['bold', 'italic', 'underline', 'clear']],
['font', ['superscript', 'subscript']],
['para', ['ul', 'ol']],
['mybuttons', ['docimage', 'docdocument']],
],
buttons: {
docimage: summernote.docImage,
docdocument: summernote.docDocument,
},
};
$('#'+id).summernote(summernote_params);
},
...
docDocumentCallback: function(context, doc) {
var id = context.options.id; // <-- get id from context
$('#'+id).summernote('createLink', {
text: doc.name,
url: doc.url,
newWindow: true
});
},
}
要保持光标位置与外部调用,只需保存位置,并将其设置在回调函数中:
var summernote = {
...
docDocument: function(context) {
var ui = $.summernote.ui;
var button = ui.button({
contents: '<i class="fa fa-file-o"></i>',
tooltip: app_i18n.summernote_document,
click: function () {
context.invoke('editor.saveRange'); // <-- save position cursor
documents.run({filter:'document', callback:[summernote.docDocumentCallback, context]});
}
});
return button.render();
},
docDocumentCallback: function(context, doc) {
context.invoke('editor.restoreRange'); // <-- set position cursor to the last save
if(context.options.id) {
$('#'+context.options.id).summernote('createLink', {
text: doc.name,
url: doc.url,
newWindow: true
});
}
},
}