Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 24.12.2021, 11:24
Профессор
Отправить личное сообщение для Ubivectel Посмотреть профиль Найти все сообщения от Ubivectel
 
Регистрация: 01.12.2020
Сообщений: 171

Добавить форму
Здравствуйте товарищи!

Вот этот код:

<a href="javascript:kide.insertSmile(' A70 ')">
         <img src="/components/com_kide/templates/default/images/iconos/A70.gif" alt="A70"></a>


вставляет смайлик вот сюда:

<textarea maxlength="3000" class="KIDE_dc_admin" id="KIDE_txt" placeholder="Сюда песать текст!" cols="50" rows="4" name="txt" onkeypress="return kide.pressedEnter(event, false)" onkeydown="kide.check_shift(event, false, false)" onkeyup="kide.check_shift(event, true, false)" style="font-size: 16px;"></textarea>


очень бы хотелось, что бы вставлял сюда:

<textarea class="KIDE_dc_admin" onkeyup="kide.check_shift(event, true, true)" onkeydown="kide.check_shift(event, false, true)" id="privados_txt" cols="28" rows="3" name="privados_txt" onkeypress="return kide.pressedEnter(event, true)"></textarea>


когда оно в фокусе. Если все правильно понял, вот скрипт который за это отвечает:

insertSmile: function (text) {
        let textarea = document.forms.kideForm.txt;
        textarea.value += " " + text;
        textarea.focus({});
    },

    filter_smilies: function (s) {
        s = " " + s + " ";
        for (let i = 0; i < this.smilies.length; i++) {
            s = s.replace(
                " " + this.smilies[i][0],
                '<img alt="' +
                this.smilies[i][0] +
                '" title="' +
                this.smilies[i][0] +
                '" src="' +
                this.smilies[i][1] +
                '" class="KIDE_icono" />'
            );
            s = s.replace(
                " " + this.smilies[i][0].toLowerCase(),
                '<img alt="' +
                this.smilies[i][0] +
                '" title="' +
                this.smilies[i][0] +
                '" src="' +
                this.smilies[i][1] +
                '" class=KIDE_icono" />'
            );
        }


Попробовал добавить функцию:

insertSmile: function (text) {
        let textarea = document.forms.kideForm.txt;
        textarea.value += " " + text;
        textarea.focus({});
    },

    insertSmile: function (textp) {
        let textarea_privados = document.forms.kideForm.privados_txt;
        textarea_privados.value += " " + textp;
        textarea_privados.focus({});
    },


    filter_smilies: function (s) {
        s = " " + s + " ";
        for (let i = 0; i < this.smilies.length; i++) {
            s = s.replace(
                " " + this.smilies[i][0],
                '<img alt="' +
                this.smilies[i][0] +
                '" title="' +
                this.smilies[i][0] +
                '" src="' +
                this.smilies[i][1] +
                '" class="KIDE_icono" />'
            );
            s = s.replace(
                " " + this.smilies[i][0].toLowerCase(),
                '<img alt="' +
                this.smilies[i][0] +
                '" title="' +
                this.smilies[i][0] +
                '" src="' +
                this.smilies[i][1] +
                '" class=KIDE_icono" />'
            );
        }


Но тогда insertSmile вообще перестает работать.
Ответить с цитированием
  #2 (permalink)  
Старый 24.12.2021, 12:49
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Ubivectel,
в оба поля одновременно?
Ответить с цитированием
  #3 (permalink)  
Старый 24.12.2021, 12:52
Профессор
Отправить личное сообщение для Ubivectel Посмотреть профиль Найти все сообщения от Ubivectel
 
Регистрация: 01.12.2020
Сообщений: 171

Нет нет, в то которое в фокусе что бы вставлялся, т.е. где в данный момент курсор
Ответить с цитированием
  #4 (permalink)  
Старый 24.12.2021, 12:55
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Ubivectel,
если одновременно то так
insertSmile: function (text) {
        let textarea = document.forms.kideForm.txt;
        textarea.value += " " + text;
        textarea.focus();
        textarea = document.querySelector('[name="privados_txt"]');
        textarea.value += " " + text;
        textarea.focus();

    },


если по разному то надо продублировать и добавить функцию но с другим именем


<a href="javascript:kide.insertSmilePrivados(' A70 ')">
         <img src="/components/com_kide/templates/default/images/iconos/A70.gif" alt="A70"></a>

insertSmilePrivados: function (text) {
        let textarea = document.querySelector('[name="privados_txt"]');
        textarea.value += " " + text;
        textarea.focus();

    },
Ответить с цитированием
  #5 (permalink)  
Старый 24.12.2021, 13:35
Профессор
Отправить личное сообщение для Ubivectel Посмотреть профиль Найти все сообщения от Ubivectel
 
Регистрация: 01.12.2020
Сообщений: 171

Функцию добавил, но не понимаю как быть с этим:

<a href="javascript:kide.insertSmilePrivados(' A70 ')">
         <img src="/components/com_kide/templates/default/images/iconos/A70.gif" alt="A70"></a>


Смайлики прописаны в HTML вот так:

<a href="javascript:kide.insertSmile(' A01 ')">
         <img ititle="A01" src="components/com_kide/templates/default/images/iconos/A01.gif" alt="A01" /></a>
         <a href="javascript:kide.insertSmile(' A03 ')">
         <img title="A03" src="components/com_kide/templates/default/images/iconos/A03.gif" alt="A03" /></a>
         <a href="javascript:kide.insertSmile(' A04 ')">
         <img title="A04" src="components/com_kide/templates/default/images/iconos/A04.gif" alt="A04" /></a>
         <a href="javascript:kide.insertSmile(' A05 ')">
         <img title="A05" src="components/com_kide/templates/default/images/iconos/A05.gif" alt="A05" /></a>
         <a href="javascript:kide.insertSmile(' A06 ')">
         <img title="A06" src="components/com_kide/templates/default/images/iconos/A06.gif" alt="A06" /></a>
         <a href="javascript:kide.insertSmile(' A07 ')">
         <img title="A07" src="components/com_kide/templates/default/images/iconos/A07.gif" alt="A07" /></a>
         <a href="javascript:kide.insertSmile(' A08 ')">
         <img title="A08" src="components/com_kide/templates/default/images/iconos/A08.gif" alt="A08" /></a>
         <a href="javascript:kide.insertSmile(' A09 ')">
         <img title="A09" src="components/com_kide/templates/default/images/iconos/A09.gif" alt="A09" /></a>
Ответить с цитированием
  #6 (permalink)  
Старый 24.12.2021, 13:42
Профессор
Отправить личное сообщение для Ubivectel Посмотреть профиль Найти все сообщения от Ubivectel
 
Регистрация: 01.12.2020
Сообщений: 171

Поменял код одного смайла на:

<a href="javascript:kide.insertSmilePrivados(' A01 ')">
         <img ititle="A01" src="components/com_kide/templates/default/images/iconos/A01.gif" alt="A01" /></a>


и теперь он вставляется только в "privados_txt" независимо от того какой из textarea в фокусе
Ответить с цитированием
  #7 (permalink)  
Старый 24.12.2021, 15:09
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Ubivectel,
выбор по фокусу.

попробуй так.
всё что выше убрать
insertSmile: function (text) {
        let textarea = document.activeElement||document.forms.kideForm.txt;
        textarea.value += " " + text;
        textarea.focus({});
    },
Ответить с цитированием
  #8 (permalink)  
Старый 24.12.2021, 15:16
Профессор
Отправить личное сообщение для Ubivectel Посмотреть профиль Найти все сообщения от Ubivectel
 
Регистрация: 01.12.2020
Сообщений: 171

Заменил:

insertSmile: function (text) {
        let textarea = document.forms.kideForm.txt;
        textarea.value += " " + text;
        textarea.focus({});
    },

    insertSmilePrivados: function (text) {
        let textarea = document.querySelector('[name="privados_txt"]');
        textarea.value += " " + text;
        textarea.focus();

    },


на:

insertSmile: function (text) {
        let textarea = document.activeElement||document.forms.kideForm.txt;
        textarea.value += " " + text;
        textarea.focus({});
    },


Так не срабатывают ни туда ни сюда (
Ответить с цитированием
  #9 (permalink)  
Старый 24.12.2021, 15:49
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Ubivectel,
это куда-то ...
let textareaActive;
document.addEventListener( "mouseup" , function({target}) {
if(target = target.closest("textarea"))  textareaActive = target;
  });


это сам знаешь куда.
insertSmile: function (text) {
        let textarea = textareaActive ||document.forms.kideForm.txt;
        textarea.value += " " + text;
        textarea.focus({});
    },
Ответить с цитированием
  #10 (permalink)  
Старый 24.12.2021, 16:11
Профессор
Отправить личное сообщение для Ubivectel Посмотреть профиль Найти все сообщения от Ubivectel
 
Регистрация: 01.12.2020
Сообщений: 171

Хм, сейчас клик по смайлику удаляет курсор из полей ...
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Добавить форму которая будет добавлять данные в массив. olelukoie Элементы интерфейса 16 19.12.2018 17:25
Добавить форму для телефона davidoff Элементы интерфейса 8 14.08.2017 09:45
Добавить поле "файл" в форму AlexandrMakedonskii Серверные языки и технологии 2 27.02.2017 04:52
Как программно создать форму и добавить контролы в неё? aristov Dojo toolkit 1 13.11.2011 00:55
Как правильно добавить форму используя jQuery Casufi jQuery 1 15.02.2010 23:14