如何在文本上使用TinyMCE函数而不实际选择该文本?

时间:2012-12-19 11:11:24

标签: jquery tinymce caret

我的页面上有各种<div>,点击后会转换为TinyMCE编辑器部分。因此,用户只需双击div,然后使用TinyMCE编辑其中的文本。

我的问题是 - 是否可以在<div>上运行TinyMCE功能而不实际选择文本?我的意思是,我想实现以下用例:

  1. 用户点击<div>
  2. <div>激活TinyMCE会话。
  3. 用户现在可以使用TinyMCE工具栏上的按钮编辑div中的所有文本,而无需使用光标手动选择文本。否则通常的情况是用户必须选择一些文本,并且只有这些选定的文本将由TinyMCE工具编辑。
  4. 如何实施,以及它有多容易?

    修改

    澄清:我并不仅仅意味着TinyMCE编辑器会自动选择所有文本进行更改,但我的意思是,如果没有选择,是否可以格式化?我的目标是允许用户只能使用TinyMCE编辑<div>格式,但不能更改文本本身。我实际上不希望用户能够选择任何文本,只需单击<div>,这应该会自动允许包含的文本由TinyMCE 格式化,而实际上没有文本被改变了。但是,如果你知道我的意思,textarea不应该为用户“选择”。它可以根据需要选择自己(根据@ Thariama的解决方案),但不是由用户选择。这可能吗?有点像只启用TinyMCE工具栏按钮但禁用文本编辑功能。据我所知,我不能使用TinyMCE的readonly配置,它还会禁用带有所有格式选项的工具栏(如文本高亮,粗体,斜体等)。

1 个答案:

答案 0 :(得分:1)

我的答案是使用@ Thariama的设置代码组合:

tinyMCE.init({ ....
    setup : function(ed) {  
    ed.onInit.add(function(ed, evt) {

        ed.getBody().setAttribute('contenteditable', false);

        var range = ed.selection.dom.createRng();

        range.setStartBefore(ed.getBody().firstChild);
        range.setEndAfter(ed.getBody().lastChild);
        ed.selection.setRng(range);
    });
}
});

有一种方法可以在textarea中禁用按键,即如果我的textarea的ID为TAID,那么我添加了这段代码:

$('#TAID_ifr').contents().find('html').bind('keypress', function(e){return false;});