BanterFace
@BanterFace
jack of all trades, master of none

Код работает из консоли, но не работает по onclick, чтяднт?

Функция:
function setSthToTextarea(valueToSet) {
	replaceSelectedText($('textarea[tabindex="3"]').insertAtCaret('[ref]' + valueToSet + '[/ref],')); 
	$('textarea[tabindex="3"]').focus(); 
	document.querySelector('textarea[tabindex="3"]').setSelectionRange(document.querySelector('textarea[tabindex="3"]').value.length, document.querySelector('textarea[tabindex="3"]').value.length);
}


Демо.
Логин: testing
Пароль: testing

Попробуйте нажать на ник постера, и выполнится лишь часть функции: да, необходимый текст вставится в textarea, но каретки в конце стоять не будет.
А теперь попробуйте в консоли
setSthToTextarea('блаблабла')
и курсор появится в конце! Что с этим делать и почему так происходит?
  • Вопрос задан
  • 185 просмотров
Решения вопроса 1
JRK_DV
@JRK_DV
Рецепты https://codepen.io/jrkdv/full/LKLXdq
Это из-за якоря в ссылке.
У вас получается такая логика:
1. Выполняется скрипт
2. Выполняется переход по якорю => теряем фокус с поля

Пробуйте возвращать false из обработчика onclick по нику
<a href="#message_form" onclick="setSthToTextarea('Fox'); return false;">Fox</a>
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
KorniloFF
@KorniloFF Куратор тега JavaScript
Работаю по font-end / JS
Попробуй в конце функции добавить
document.getElementById('message').focus();
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы