如何将光标移动到WYMeditor框的末尾并设置焦点?

时间:2013-08-16 18:03:36

标签: javascript jquery wymeditor

我在论坛上使用WYMEditor,用户可以“引用”其他人的消息。在这种情况下,WYMEditor会加载包含在blockquote标记中的内容。

不幸的是,通常报价的内容比输入框大小占用更多空间,当用户点击框时最终在blockquote中输入文本。这会导致杂乱的消息。

我想要的是将WYMEditor的内容滚动到底部,将光标放在最后并专注于wym框。不幸的是,WYMEditor api中没有这样的功能。有一些未记录的函数在源代码中提供了选择管理,但是我的JavaScript / jQuery技能还不足以使用它们 - 我已经尝试但失败了。

1 个答案:

答案 0 :(得分:0)

postInit选项和jQuery scrollTop函数的组合应该可以解决问题。我还建议为它们插入一个占位符段落,同时滚动到底部。例如:

jQuery('.wymeditor').wymeditor({
    postInit: function (wym) {
        var $contents,
            $p,
            $blockquote = jQuery(wym._doc).find('blockquote');
        // Insert a placeholder empty paragraph 
        // so that users will be encouraged to not type inside the blockquote
        $blockquote.after("<p>");

        // Scroll the iframe to the bottom
        $contents = $(wym._iframe).contents();
        $contents.scrollTop($contents.height());

        // Move the selection to the paragraph
        $(wym._iframe).focus();
        $p = jQuery(wym._doc).find('p');

        var sel = rangy.getIframeSelection(wym._iframe),
            range = rangy.createRange(wym._doc);

        range.setStart($p[0], 0);
        range.setEnd($p[0], 0);
        range.collapse(true);

        sel.setSingleRange(range);
        if (jQuery.browser.msie) {
            wym.saveCaret();
        }    
    }
});