2011-10-15 19 views
9

我使用Cleditor http://premiumsoftware.net/cleditor/docs/GettingStarted.html。我想获得keyup的值并将文本插入另一个div。 cleditor自带change()事件,我目前在下面的jsfiddle例子中使用,但那与keyup不一样。我想要在输入时更新div。我尝试了keyup,但它不起作用。jQuery Cleditor在关键字上获取textarea值

这里就是我现在

$("#input").cleditor().change(function(){ 
    var v = $('#input').val(); 
    $('#x').html(v); 
}) 

检查的jsfiddle http://jsfiddle.net/qm4G6/11/

回答

16

看来,cleditor隐藏textarea并与iframe替换它(见cleditor源线203)。

因此,要达到你想要什么,你只需要访问生成iframe内容:

$("#input").cleditor(); 

$(".cleditorMain iframe").contents().find('body').bind('keyup', function(){ 
    var v = $(this).text(); // or .html() if desired 
    $('#x').html(v); 
}); 

Updated jsFiddle

更新来解决Tim的评论

这个工作在Chrome和Firefox (我没有访问IE):

$("#input").cleditor(); 

$($(".cleditorMain iframe")[0].contentWindow.document).bind('keyup', function(){ 
    var v = $(this).text(); // or .html() if desired 
    $('#x').html(v); 
}); 

Updated jsFiddle

UPDATE 2

用户ima007能够找到一个更好的跨浏览器的解决方案:jQuery Cleditor wysiwyg text editor: keyup() works in webkit browsers but not Firefox or IE

+0

这小提琴解决方案适用于WebKit浏览器,Chrome和Safari,但不是在Firefox或IE浏览器,我一直没能弄明白,但我想,如果有人可以提供一个代码修复这2个浏览器?谢谢你,-tim peterson –

+0

我在这里回答了你的后续问题:http://stackoverflow.com/questions/7864012/jquery-cleditor-wysiwyg-text-editor-keyup-works-in-webkit-browsers-but-not-科幻 – dgilland

0

我能够通过稍微修改编辑器的源代码,以实现此 - in refresh方法(第801行)我修改了iframe doc的blur事件处理程序。

上一页

// Update the textarea when the iframe loses focus 
    ($.browser.mozilla ? $doc : $(contentWindow)).blur(function() { 
     updateTextArea(editor, true); 
    }); 

修改到

// Update the textarea when the iframe loses focus or keyup happens 
     ($.browser.mozilla ? $doc : $(contentWindow)).bind('blur keyup', function (e) { 
      updateTextArea(editor, true); 

      if (options.keyup && e.type === 'keyup') 
       options.keyup(editor.$area.val()); 
     }); 

,并在在初始化时传递的选项,你可以定义

$("#element").cleditor({ 
keyup : function (text) { 
alert(text); 
// do something 
} 
}); 

希望这有助于任何人。

Regards

0

您是否尝试过使用CLEditor'.doc'属性?

doc - 当前正在iframe中编辑的文档对象。 cleditor documentation

var inputDoc = $("#input").cleditor().doc; 

$(inputDoc).keyup(function(){ 
    var v = $('#input').val(); 
    $('#x').html(v); 
})