Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   ставка эмоджи в textarea (https://javascript.ru/forum/misc/81393-stavka-ehmodzhi-v-textarea.html)

od0201 18.11.2020 22:51

вставка эмоджи в 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
можно это как-то исправить?

Nexus 19.11.2020 01:03

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. библиотека - говно, хоть и выглядит неплохо.

od0201 19.11.2020 03:21

Цитата:

Сообщение от Nexus (Сообщение 530891)
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 поставить вторым, но визуально чтоб он стоял первым

Nexus 19.11.2020 04:20

Цитата:

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

Прошу прощения.

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

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

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

Цитата:

Сообщение от od0201
через расширение я туда добавляю перед ним свой textarea

Добавляйте свое поле после, а не перед существующим textarea.

od0201 19.11.2020 04:21

Цитата:

Сообщение от Nexus (Сообщение 530893)
Добавляйте свое поле после, а не перед существующим 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

Nexus 19.11.2020 13:41

Цитата:

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

Я не вижу более менее адекватного решения в текущих условиях.

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


Часовой пояс GMT +3, время: 10:37.