【问题标题】:How to close the quill editor when done with editing完成编辑后如何关闭羽毛笔编辑器
【发布时间】:2020-09-12 23:41:56
【问题描述】:

我在 DOM 中元素的单击事件上动态实例化 QuillJS 编辑器。所以我的要求是,一旦用户完成了对该元素的编辑,他/她应该能够关闭编辑器。目前,我在 quill API 中没有看到任何关闭方法。启用/禁用 API 方法对我不起作用,因为我想完全关闭编辑器并向用户显示他/她在看到羽毛笔编辑器之前所拥有的相同视图,但当然还有保存的更改。

可以在这里查看演示
https://codepen.io/curiousdj/pen/eEjbPK

const options = { theme: "snow" };
var divs = document.getElementsByTagName("div");
var initializeQuill = function (e){
     if(!this.quill){
        console.log(e);
        this.target = event.currentTarget;
        this.quill = new Quill(this.target, options);
        this.target.children[0].onclick = function(et) { et.preventDefault(); };
        this.target.children[0].onblur = function(l) {
               l.target.parentElement.quill.close;
         };
        }
        this.quill.focus();
        e.stopPropagation();
        e.preventDefault();
}
for(var i = 0; i < divs.length; i++){
    divs[i].onclick = initializeQuill;
}

【问题讨论】:

    标签: javascript quill


    【解决方案1】:

    我建议:

    1. 复制 quill 实例的内容,销毁实例绑定的 DOM 元素,创建新的 DOM 元素并将内容粘贴回
    2. 您已经尝试过通过 API 使用禁用,但也可以设置禁用的 Quill 实例的样式,以使 Quill 的格式与您自己的格式之间没有任何区别。

    我已经更新了您的笔 here,以提供具有基本更改的第二个选项的示例

    .ql-editor {
      padding:0;
      line-height:inherit;
    }
    
    .ql-editor p {
      margin-bottom:10px;
    }
    
    .ql-toolbar {
      display:none;
    }
    
    .ql-container.ql-snow {
      border:none;
      font-family:inherit;
      font-size:inherit;
    }
    

    【讨论】:

      【解决方案2】:

      这对我有用:

      function destory_editor(selector){
          if($(selector)[0])
          {
              var content = $(selector).find('.ql-editor').html();
              $(selector).html(content);
      
              $(selector).siblings('.ql-toolbar').remove();
              $(selector + " *[class*='ql-']").removeClass (function (index, css) {
                 return (css.match (/(^|\s)ql-\S+/g) || []).join(' ');
              });
      
              $(selector + "[class*='ql-']").removeClass (function (index, css) {
                 return (css.match (/(^|\s)ql-\S+/g) || []).join(' ');
              });
          }
          else
          {
              console.error('editor not exists');
          }
      }
      

      要使用它,只需调用:

      destory_editor('.editor');
      

      【讨论】:

        【解决方案3】:

        您可以尝试在内容 div 上设置contenteditable="false"

        【讨论】:

        • 嘿@Roshan, contenteditable 在这种情况下不会有帮助,因为我的用例需要在编辑完成后关闭编辑器。所以我正在寻找一个我可以称之为 onblur 之类的事件。
        猜你喜欢
        • 1970-01-01
        • 2020-12-30
        • 1970-01-01
        • 1970-01-01
        • 2020-11-07
        • 1970-01-01
        • 2017-08-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多