Jquery 混合内容的Summernote可编辑和不可编辑div';s、 空格中断并导致滚动
我正在尝试实现一个具有可编辑区域(以及不可编辑区域)的summernote编辑器。我通过如下标记轻松地完成了大部分工作:Jquery 混合内容的Summernote可编辑和不可编辑div';s、 空格中断并导致滚动,jquery,summernote,Jquery,Summernote,我正在尝试实现一个具有可编辑区域(以及不可编辑区域)的summernote编辑器。我通过如下标记轻松地完成了大部分工作: <article contenteditable="false"> <div class="content" doc="123" title="Sample"> <div class="panel"> <h1>This is a sample document</h1> <
<article contenteditable="false">
<div class="content" doc="123" title="Sample">
<div class="panel">
<h1>This is a sample document</h1>
<div class="choice">
<div class="territory ALL">
<p>This is all (not editable)</p>
</div>
<div class="territory AUS">
<p>This is AUS, not editable</p>
</div>
<div class="territory UK" contenteditable="true">
<p>This is UK, editable</p>
</div>
</div>
...
它确实进入这个处理程序,事件目标是contenteditable div(示例中的UK div),但是空间被占用了。滚动停止,但没有空格。我可以键入所有其他字符,但不能键入空格字符
来自summernote的建议?summernote中是否有这样或那样的东西
更新1当使用summernote 0.6.16进行测试时,这不会发生,最新的0.8.2甚至0.7.0会发生
使用此简单示例进行的测试显示了以下行为:
将其更改为0.6.16,您可以在可编辑的div中键入空格,以后的任何操作都无法执行
更新2修改结构,使contenteditable false div不是true div的父级,可以解决问题,但作为问题的解决方案,这并不理想。通过这一点,我实现了下面的代码(对于英国是固定的,但在将来是可变的)。这会将UK类的所有div标记为可编辑,将所有其他最低级别的元素标记为不可编辑。这确实具有所需的效果,但应该很简单,将最高级别标记为不可编辑,并且只标记那些应可编辑的区域
jQuery.ajax({
url: 'view-article.xq?doc=' + doc + '&timestamp=' + timestamp,
type: "GET",
dataType: "html",
complete: function (Response) {
$('#viewer').html(Response.responseText);
$('#summernote_copy').html(Response.responseText);
// Mark only nodes available to edit here
$('#summernote_copy *').each(function(i, elem){
var c = $(elem).attr('class');
if(typeof c != 'undefined' && ~c.indexOf('UK'))
$(elem).attr('contenteditable','true');
else if ($(elem).children().length == 0) {
var in_target = false;
$(elem).parents().each(function(i,par){
var d = $(par).attr('class');
if (typeof d != 'undefined' && ~d.indexOf('UK')){
in_target = true;}
});
if (!in_target) {
$(elem).attr('contenteditable','false');
}
}
});
$('#summernote').summernote('code', $('#summernote_copy').html());
}
谢谢
jQuery.ajax({
url: 'view-article.xq?doc=' + doc + '&timestamp=' + timestamp,
type: "GET",
dataType: "html",
complete: function (Response) {
$('#viewer').html(Response.responseText);
$('#summernote_copy').html(Response.responseText);
// Mark only nodes available to edit here
$('#summernote_copy *').each(function(i, elem){
var c = $(elem).attr('class');
if(typeof c != 'undefined' && ~c.indexOf('UK'))
$(elem).attr('contenteditable','true');
else if ($(elem).children().length == 0) {
var in_target = false;
$(elem).parents().each(function(i,par){
var d = $(par).attr('class');
if (typeof d != 'undefined' && ~d.indexOf('UK')){
in_target = true;}
});
if (!in_target) {
$(elem).attr('contenteditable','false');
}
}
});
$('#summernote').summernote('code', $('#summernote_copy').html());
}