Как переместить курсор в конец поля 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();
}
}
});