Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 18.11.2020, 22:51
Кандидат Javascript-наук
Отправить личное сообщение для od0201 Посмотреть профиль Найти все сообщения от od0201
 
Регистрация: 07.05.2020
Сообщений: 108

вставка эмоджи в textarea
на странице присутствует <textarea id=text...
через расширение я туда добавляю перед ним свой textarea

на странице внедрен плагин (вставка эмоджи)
cssscript.com/fg-emoji-picker/
который настроен на единственный textarea
new FgEmojiPicker({
    trigger: ['button', 'textarea'],
    position: ['bottom', 'right'],
    emit(obj, triggerElement) {
      const emoji = obj.emoji;
      document.querySelector('textarea').value += emoji;
    }
});
но так как мои textarea выше, то все эможди вставляются в мой textarea
можно это как-то исправить?

Последний раз редактировалось od0201, 19.11.2020 в 10:00.
Ответить с цитированием
  #2 (permalink)  
Старый 19.11.2020, 01:03
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,726

od0201, попробуйте так:
new FgEmojiPicker({
    trigger: ['button', 'textarea'],
    position: ['bottom', 'right'],
    emit(obj, triggerElement) {
      const emoji = obj.emoji;
      if (triggerElement instanceof HTMLInputElement || triggerElement instanceof HTMLTextAreaElement) {
        triggerElement.value += emoji;
      }
    }
});


p.s. библиотека - говно, хоть и выглядит неплохо.
Ответить с цитированием
  #3 (permalink)  
Старый 19.11.2020, 03:21
Кандидат Javascript-наук
Отправить личное сообщение для od0201 Посмотреть профиль Найти все сообщения от od0201
 
Регистрация: 07.05.2020
Сообщений: 108

Сообщение от Nexus Посмотреть сообщение
od0201, попробуйте так:
new FgEmojiPicker({
    trigger: ['button', 'textarea'],
    position: ['bottom', 'right'],
    emit(obj, triggerElement) {
      const emoji = obj.emoji;
      if (triggerElement instanceof HTMLInputElement || triggerElement instanceof HTMLTextAreaElement) {
        triggerElement.value += emoji;
      }
    }
});


p.s. библиотека - говно, хоть и выглядит неплохо.
страница не моя, я могу изменять ее только с расширения. Иначе я бы настраивал document.querySelector('textarea#text').value += emoji;

может есть возможность переопределить функцию emit или textarea поставить вторым, но визуально чтоб он стоял первым
Ответить с цитированием
  #4 (permalink)  
Старый 19.11.2020, 04:20
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,726

Сообщение от od0201
страница не моя, я могу изменять ее только с расширения.
Прошу прощения.

Переопределить можно было бы, если бы созданный экземпляр этой библиотеки сохранялся в глобальной области видимости либо был бы доступным из вне, однако это не так.

Можно было бы сбросить вообще все слушатели со всех элементов button и textarea, если бы эта библиотека вешала слушатели на них, однако она делегирует слушателя элементу body.

Можно сбросить вообще все слушатели со всего документа, но тогда на странице единственным работающим скриптом будет эта библиотека.

Сообщение от od0201
через расширение я туда добавляю перед ним свой textarea
Добавляйте свое поле после, а не перед существующим textarea.
Ответить с цитированием
  #5 (permalink)  
Старый 19.11.2020, 04:21
Кандидат Javascript-наук
Отправить личное сообщение для od0201 Посмотреть профиль Найти все сообщения от od0201
 
Регистрация: 07.05.2020
Сообщений: 108

Сообщение от Nexus Посмотреть сообщение
Добавляйте свое поле после, а не перед существующим textarea.
именно так и сделал, добавляю поле после существующего, а потом меняю местами(CSS flexbox). Спасибо
<html>
  <script src="http://code.jquery.com/jquery-1.8.3.js"></script>
  <style>
    .container {
      display: flex;
      flex-direction: column-reverse;
    }
  </style>
  <div class=container>
    <div  style="background: #FFFAC0;height: 300px;width:300px"> <textarea>первый</textarea></div>
    <div  style="background: #AFFAC0;height: 200px;width:200px"> <textarea>второй</textarea></div>
  </div></html>
<script>
  $('div textarea:first').val('новый')
</script>

но хотелось бы переопределить функцию emit

Последний раз редактировалось od0201, 19.11.2020 в 10:04.
Ответить с цитированием
  #6 (permalink)  
Старый 19.11.2020, 13:41
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,726

Сообщение от od0201
хотелось бы переопределить функцию emit
Я не вижу более менее адекватного решения в текущих условиях.

Может быть кто-нибудь более квалифицированный подскажет вам решение вашей задачи.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скопировать содержимое textarea в другую textarea igorfelix89 Javascript под браузер 2 30.11.2018 01:43
Из одного textarea в другой… Chile Events/DOM/Window 1 10.02.2016 09:16
Вопрос по textarea stivins Элементы интерфейса 3 05.11.2015 16:59
Проверка textarea на заполнение из файла espltd Элементы интерфейса 10 30.06.2015 15:48
обновить textarea wp2 Events/DOM/Window 6 03.02.2012 23:44