【问题标题】:jEditable: pass TinyMCE content back to textareajEditable:将 TinyMCE 内容传回 textarea
【发布时间】:2011-05-09 13:45:29
【问题描述】:

您好,我在 textarea 上混合了 tinyMCE jquery 插件和 jeditable。单击可编辑元素时,它会变成 tinymce iframe。现在我需要在表单被 ajaxed 之前使用 tinymce.triggerSave() 将 iframe 内容传递回 textarea。

有人知道吗?

    function editNote(){
    $('.edit').editable('<?php echo base_url(); ?>index.php/notes/edit', {
         type      : 'textarea',
         onblur    : 'ignore',
         cancel    : 'Cancel',
         submit    : 'OK',
         indicator : "<img src='<?php echo base_url(); ?>css/images/indicator.gif'>",
         tooltip   : 'Click to edit...'

     });
 }

 $('.edit').live('click', function(){
    editNote();
    $('textarea').tinymce({
                    // Location of TinyMCE script
                    script_url : '<?php echo base_url(); ?>js/tiny_mce/tiny_mce.js',

                    // General options
                    theme : "simple"
});
});

上面的代码调用了editNote函数,然后调用了tinymce js。

我正在寻找一种方法来运行 tinyMCE.triggerSave();在提交可编辑表单之前。所以类似于回调的反面。

谢谢,

比利

【问题讨论】:

    标签: javascript ajax jquery-plugins tinymce jeditable


    【解决方案1】:

    改为添加这段代码。您基本上创建了一个名为 mce 的新类型。

    $.fn.tinymce = function(options){
       return this.each(function(){
          tinyMCE.execCommand("mceAddControl", true, this.id);
       });
    }
    
    function initMCE(){
       tinyMCE.init({
            mode : "textarea",
            theme : "advanced",
            ... // YOUR CUSTOMIZATION
          });
    }
    
    initMCE();
    
    $.editable.addInputType('mce', {
       element : function(settings, original) {
          var textarea = $('<textarea id="'+$(original).attr("id")+'_mce"/>');
          if (settings.rows) {
             textarea.attr('rows', settings.rows);
          } else {
             textarea.height(settings.height);
          }
          if (settings.cols) {
             textarea.attr('cols', settings.cols);
          } else {
             textarea.width(settings.width);
          }
          $(this).append(textarea);
             return(textarea);
          },
       plugin : function(settings, original) {
          tinyMCE.execCommand("mceAddControl", true, $(original).attr("id")+'_mce');
          },
       submit : function(settings, original) {
          tinyMCE.triggerSave();
          tinyMCE.execCommand("mceRemoveControl", true, $(original).attr("id")+'_mce');
          },
       reset : function(settings, original) {
          tinyMCE.execCommand("mceRemoveControl", true, $(original).attr("id")+'_mce');
          original.reset(this);
       }
    });
    

    在您的 JEditable 启动中将其设为 mce 类型。所以:

        $(".edit").editable('ajax/save.php?editnotetext', {
            type : 'mce',
            ... // etc
        });
    

    【讨论】:

    • 这看起来不错,稍后我会试一试并告诉你。干杯
    • 我的荣幸。我知道这是多么令人沮丧。随时查看我的其他帖子了解更多 TinyMCE+JEditable 戏剧。
    • 这是古老的,但我刚刚使用 tinyMCE 版本 4 实现了它。如果将 mceAddControl 替换为 mceAddEditor,并将 mceRemoveControl 替换为 mceRemoveEditor,则它可以工作
    • 另外,$.fn.tinymce 的定义似乎是多余的——不知道应该做什么。我没有在我的代码中使用它。
    猜你喜欢
    • 1970-01-01
    • 2015-05-24
    • 2016-04-02
    • 2012-02-01
    • 1970-01-01
    • 2014-08-05
    • 1970-01-01
    • 2012-03-04
    • 1970-01-01
    相关资源
    最近更新 更多