Как переместить курсор в конец поля WYMeditor и установить фокус?

Я использую WYMEditor на своем форуме, и пользователи имеют возможность "цитировать" сообщения других людей. В таких случаях WYMEditor загружается с контентом, заключенным в тег blockquote.

К сожалению, обычно содержимое цитаты занимает больше места, чем размер поля ввода, и когда пользователи щелкают по блоку, в конечном итоге они вводят свой текст внутри цитаты. Это приводит к грязным сообщениям.

Я хочу прокрутить содержимое WYMEditor вниз, поместить курсор в конец и сфокусироваться на окне wym. К сожалению, в API WYMEditor такой функциональности нет. Есть некоторые недокументированные функции, которые обеспечивают управление выбором в источнике, но мои навыки JavaScript/jQuery не достаточно хороши, чтобы использовать их - я пытался, но потерпел неудачу.

1 ответ

Решение

Сочетание 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();
        }    
    }
});
Другие вопросы по тегам