2012-03-28 224 views
1

我有一个tinyMCE textarea,我想限制用户输入的像素大小。真的,我喜欢。我知道这不是大多数人使用tinyMCE的方式,但我们允许客户为特定尺寸的广告输入和格式化自己的广告文字(407px x 670px)。所以我想限制他们可以输入的尺寸。我无法限制字符的数量,因为这取决于字体样式/大小。我实际上希望输入适合特定大小的盒子。tinyMCE - 我需要限制输入的文本的宽度/高度

我已成功调整了编辑区的大小,并关闭了编辑器和滚动条的大小调整(Firefox中),但它仍然允许用户继续输入框的边缘。有没有办法禁止这个?

http://www.retailpromoinc.com/RestaurantAdvertising.php

谢谢您的考虑,我一直在冥思苦想好几个小时了!

回答

0

它是一个复杂的,据我所知TinyMCE Api没有这样做的功能。你可以尝试做的是配置由TineMCE创建的iFrame。

通过:

function iFrameConfig() { 
    var iFrame = document.getElementById('textareaid_ifr'); 
    iFrame.setAttribute('scrolling', 'no'); 
    iFrame.style.width = '300px'; 
    iFrame.style.height = '600px'; 
} 
+0

这不会像user1279447所希望的那样工作。文字可以输入,但不会在编辑器内显示。不过,输入的内容在编辑器中! – Thariama 2012-03-29 08:18:30

0

看起来你将不得不写an own plugin这一点。我会告诉你必要的步骤。

  1. 这里是关于如何写an own plugin的教程,这并不难。
  2. 你将不得不检查编辑器内容为每个用户动作检查(keyup,paste,aso。)。为此,使用预定义的tinymce事件处理程序。 如果670px大小比实际尺寸更小,你将有to undo自动使用tinymce.get('my_editor_id').undoManager.undo();
0

我与基于撤销(THX)我对Thariama的想法解决以下行的最后一个用户的操作。

setup : function(ed) { 
    ed.wps = {}; // my namespace container 
    ed.wps.limitMceContent = function(ed) { 
     if ((ed.wps.$textcanvas.height() + ed.wps.textcanvasDummyHeight) > ed.wps.iframeHeight) { 
      ed.undoManager.undo(); 
     } 
    }; 


    ed.onKeyDown.add(ed.wps.limitMceContent); 
    ed.onChange.add(ed.wps.limitMceContent); // change is fired after paste too 

    ed.onInit.add(function(ed) { 
     // cache selectors and dimensions into namespace container 
     ed.wps.$iframe = $("textarea.tinymce").next().find("iframe"); 
     ed.wps.iframeHeight = ed.wps.$iframe.height(); 
     ed.wps.$textcanvas = $(ed.wps.$iframe[0].contentDocument.body); 
     ed.wps.textcanvasDummyHeight = parseInt(ed.wps.$textcanvas.css("marginTop"), 10) + parseInt(ed.wps.$textcanvas.css("marginBottom"), 10); 
    }); 
} 

Working demo。适用于keyDownpaste。仅在FF 12和Chrome上测试。