使用 v0.8.2。
这是我的解决方案,虽然它并不完美,特别是如果开发人员更改了 html 和/或类名,但它可以满足我的需要。
我的 MVC 应用程序有许多 Summernote 控件被动态添加到页面中,并且每个控件都有一个分配给它的 ID。一些控件仅显示图像(上传)按钮,而其他控件仅显示文本样式按钮。对于只有图像的summernote 控件,我不希望用户能够输入文本,因此我只需要禁用文本输入/图像面板,而不是整个控件。这样我仍然允许使用按钮。
这是我的解决方案,而且可行!确保在 Summernote 控件初始化后触发。
var container = $('#summernote2').nextAll('div.note-editor:first').find('.panel-body');
if ($(container).length)
{
$(container).prop('contenteditable', 'false');
}
发生了什么?
- 在我的特定 Summernote 控件 (id = summernote2) 中,我将第一个 div 与特定类 ('note-editor') 一起定位在它的正下方。所有这些都是在控件初始化时动态添加到页面中的。见下图:
- 然后,使用 FIND 继续向下查找类“panel-body”,即文本实际放置的位置,在上图中突出显示。
- 假设我找到它,然后我将 contenteditable 属性更改为 false。砰!
可能有更多的链接可以完成,也许还有更有效的方法,但这工作得非常巧妙。
为什么会这样?
因为我在页面上有多个控件,并且没有将我的 ID 的 Summernote DIV 直接链接到作为初始化的一部分创建的所有其他 DIV,所以我认为这是一个很好的解决方案。否则,我怎么能保证获得正确的 panel-body 类?
祝你好运,让我知道你的想法!如果这充分回答了您的问题,请记住检查它是否已回答!
在一个完美的世界里,你会认为开发人员会让它变得更容易。这应该就是它所需要的,但不,它不起作用......:
$('#summernote2').summernote('contenteditable','false');