Javascript jQuery Cleditor在keyup上获取textarea值

Javascript jQuery Cleditor在keyup上获取textarea值,javascript,jquery,wysiwyg,onkeyup,cleditor,Javascript,Jquery,Wysiwyg,Onkeyup,Cleditor,我用的是Cleditor。我想获取keyup上的值,并将文本插入另一个div中。cleditor附带change()事件,我目前正在下面的jsfiddle示例中使用该事件,但这与keyup不同。我希望在键入时更新div。我试过键控,但没用 这是我现在拥有的 $("#input").cleditor().change(function(){ var v = $('#input').val(); $('#x').html(v); }) 检查jsfiddle似乎cleditor隐藏了

我用的是Cleditor。我想获取keyup上的值,并将文本插入另一个div中。cleditor附带change()事件,我目前正在下面的jsfiddle示例中使用该事件,但这与keyup不同。我希望在键入时更新div。我试过键控,但没用

这是我现在拥有的

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

检查jsfiddle

似乎
cleditor
隐藏了
textarea
,并将其替换为
iframe
(参见cleditor source的第203行)

因此,要实现您想要的功能,您只需访问生成的
iframe
内容:

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

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

更新以回应Tim的评论

这适用于Chrome和Firefox(我没有访问IE的权限):

更新2


用户能够找到更好的跨浏览器解决方案:

我能够通过稍微修改编辑器的源代码来实现这一点- 在
refresh
方法(第801行)中,我修改了iframe文档的模糊事件处理程序

先前的

// 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
}
});
希望这对任何人都有帮助


关于

您是否尝试过使用CLEditor“.doc”属性

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


这个fiddle解决方案适用于webkit浏览器、chrome和safari,但不适用于firefox或IE,我还没有弄清楚,但我想知道是否有人可以为这两种浏览器提供代码修复?谢谢,-tim petersonI在这里回答了您的后续问题:链接已断开,但是,还说:
这些属性应被视为只读。
$("#element").cleditor({
keyup : function (text) {
 alert(text);
 // do something
}
});
var inputDoc = $("#input").cleditor().doc;

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