3

我在通过颜色框显示的弹出窗口上有一个 wysiHtml5 文本区域:

$j.colorbox({
                inline: true,
                href: "#popup",
                scrolling: false,
                onLoad: function() {
                    $('#cboxClose').remove();
                },
                onCleanup: function () {
                    $j("div#popup").hide();

                },
                onClosed: function () {
                    editor = null;
                },
                onComplete: function () {

                    var editor = new wysihtml5.Editor("wysiwygText", { // id of textarea element
                        toolbar: "wysihtml5-toolbar", // id of toolbar element
                        parserRules: wysihtml5ParserRules, // defined in parser rules set 
                        stylesheets: ["Styles/wysihtml5.css", "Styles/wysihtml5.css"]
                    });


                }
            });

编辑器在第一次弹出颜色框时工作正常。但是如果它被关闭并重新打开,用户就不能点击进入编辑器。

我想知道这是否与我试图重新创建编辑器对象有关?问题是,如果我在颜色盒启动之前创建它,当颜色盒启动时编辑器会“损坏”。(即如果我将#popup 设置为可见,我可以在页面加载时对其进行编辑,但是当我启动颜色框时,我再次无法编辑内容。

行为是我可以看到文本区域,但我不能“点击”它。

4

2 回答 2

2

这可能对您没有帮助,但我遇到了这样的问题。我必须在元素设置为对话框后创建编辑器。

              $(".addtext").click(function(){

                    $("#editorcontainer").dialog({
                        width: 737
                    });

                    (function($){
                        $("#wysihtml5-textarea").wysihtml5(); 
                    })($1_7_2);

                });

唯一的问题是 wysihtml5 编辑器的重复与对话框的并发打开。当我修复它时,我会再次发布。

编辑:我可能应该花时间阅读 wysihtml5 代码以真正了解发生了什么,但我现在不能花太多时间在上面。我注意到每次调用 wysihtml5() 时编辑器都会创建 dom 元素。这是制作重复的元素,因此想法是使用容器元素并在对话框打开时创建其内部内容,并在对话框关闭时销毁其内部内容。顺便说一句,当程序员不记录他们的设计时,我真的很讨厌。

//button click event
$(".addtext").click(function(){
        $("#editorcontainer").dialog({
             width: 737,

             open: function(event, ui){
                  //create inner html
                  $(this).html("<form><textarea id=\"wysihtml5-textarea\" \
                  placeholder=\"Enter your text ...\" \
                  autofocus></textarea></form>");
             },

             close: function(event, ui){
                  //remove inner html
                  $(this).html("");
              }

          });

          //older version of jQuery aliased to $1_7_2
          (function($){
               //invoke the editor
               $("#wysihtml5-textarea").wysihtml5(); 
           })($1_7_2);

 });
于 2013-03-25T03:17:43.497 回答
0

如果您删除此功能,并且在弹出窗口关闭时不破坏编辑器实例怎么办。

onClosed: function () {
  editor = null;
}

您在 javascript 控制台中是否有任何错误?

于 2013-03-21T11:02:31.323 回答