Jquery 混合内容的Summernote可编辑和不可编辑div';s、 空格中断并导致滚动

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> <

我正在尝试实现一个具有可编辑区域(以及不可编辑区域)的summernote编辑器。我通过如下标记轻松地完成了大部分工作:

<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 + '&amp;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 + '&amp;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());
    }