[javascript] вставка в TEXTAREA в позицию курсора
Глянь в исходники страницы этого форума, где ты пишешь ответ. Смайлики при нажатии ставятся в позицию курсора.
http://xpoint.ru/know-how/JavaScript/YemulyatsiyaSelectionSt...
По мотивам этой статьи была написана функция forum_bbTag
http://chelsea-fc.ru/js/forum.js
Как она работает можно посмотреть на http://chelsea-fc.ru/forum/
По мотивам этой статьи была написана функция forum_bbTag
http://chelsea-fc.ru/js/forum.js
Как она работает можно посмотреть на http://chelsea-fc.ru/forum/
Глянь в исходники страницы этого форума, где ты пишешь ответ. Смайлики при нажатии ставятся в позицию курсора.Это я и сделал в первую очередь. Более того, я написал об этом в своём посте.
А посмотреть в исходниках этого форума функцию insertAtCaret?
А посмотреть в исходниках этого форума функцию insertAtCaret?А где их взять?
http://chelsea-fc.ru/js/forum.jsОтбросив то, что не нужно, я понял, что основная фишка вот в этом:
var x = message$body.value.substr(0, message$body.selectionStart) +
start + message$body.value.substring(message$body.selectionStart, message$body.selectionEnd) +
end + message$body.value.substr(message$body.selectionEnd);
message$body.value = x;
Проблема в том, что все три сабстринга у меня возвращают весь текст. Полностью. А совсем не его подстроки.
Для IE там второй блок.
Вот то, что я наваял:
function insertAtCaret (textEl, text) {
var sel = textEl._sel;
if (sel.parentElement == textEl) {
var move_back = (sel.text == '' && text != '') ? - text.length : 0;
sel.text = text + sel.text + text;
sel.collapse;
sel.move('character', move_back);
sel.select;
} else {
textEl.value += text;
}
}
Что здесь неправильно?
Хозяева форума! Ну покажите мне эту функцию, пожалуйста! Мне только одна функция нужна.
посмотреть исходы этой функции ты можешь прямо в браузере, никакие хозяева форума для этого не нужны.
Ой, я тормоз. И как я раньше её не увидел?
Тупо скопировал код функции. Не работает. Идёт сразу на елсе. Вставляет в конец текста. Что я делаю не так?
Стойте, не говорите, я, кажется, понял.
Ура! Работает! Теперь понять, почему работает, но это уже мелочи. Всем спасибо, тема закрыта.
Оставить комментарий
Flack_bfsp
Как? В гугл не посылать, уже всё обгуглил, что можно. Впоиск тоже, искал слова TEXTAREA, там совсем не то обсуждается.Итак, мне нужно вставить некий текст в позицию курсора. Поглядел, как это делается здесь. на форуме. Вызывается некая функция insertAtCaret. Поискал в инете на это слово. Нашёл такую вещь:
Пробовал запускать. Всегда идёт на ветвь елсе. Независимо от того, есть ли текст в моём TEXTAREA или нет, много ли там сточек, или только одна, если ли выделение или нет. Что в этом коде неправильно? Глядел мсдн. Нету у TEXTAREA никаких свойств, похожих на caretPos.
Я в джаваскрипте не рюх, помогите, плз.