jQuery Cleditor 在 keyup 上获取 textarea 值

Posted

技术标签:

【中文标题】jQuery Cleditor 在 keyup 上获取 textarea 值【英文标题】:jQuery Cleditor get textarea value on keyup 【发布时间】:2011-12-08 13:06:08 【问题描述】:

我正在使用 Cleditor http://premiumsoftware.net/cleditor/docs/GettingStarted.html。我想获取 keyup 的值并将文本插入另一个 div。 cleditor 带有我当前在下面的 jsfiddle 示例中使用的 change() 事件,但这与 keyup 不同。我希望在我输入时更新 div。我尝试了 keyup 但它不起作用。

这是我现在拥有的

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

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

【问题讨论】:

【参考方案1】:

似乎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

更新以解决蒂姆的评论

这适用于 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

更新 2

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

【讨论】:

这个小提琴解决方案适用于 webkit 浏览器、chrome 和 safari,但不适用于 firefox 或 IE,我无法弄清楚,但我想知道是否有人可以为这 2 个提供代码修复浏览器?谢谢你,-蒂姆彼得森 我在这里回答了您的后续问题:***.com/questions/7864012/…【参考方案2】:

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

上一个

// 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

);

希望这对任何人都有帮助。

问候

【讨论】:

【参考方案3】:

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

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

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

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

【讨论】:

链接已损坏,但是,documentation 也说:These properties should be considered readonly.

以上是关于jQuery Cleditor 在 keyup 上获取 textarea 值的主要内容,如果未能解决你的问题,请参考以下文章

JQuery——键盘事件.keydown().keyup()和.keypress()

带有“keyup”和“change”参数的 jQuery on() 方法在移动设备上不起作用

jquery移动端键盘keyup失效

jquery 键盘事件 keypress() keydown() keyup()

JQuery keyup 防止在 Chrome 中选择文本。怎么解决?

jquery mobile - 移动设备上的keyup keydown