Добавить форму
Здравствуйте товарищи!
Вот этот код: <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 вообще перестает работать. :help: |
Ubivectel,
в оба поля одновременно? |
Нет нет, в то которое в фокусе что бы вставлялся, т.е. где в данный момент курсор
|
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(); }, |
Функцию добавил, но не понимаю как быть с этим:
<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> |
Поменял код одного смайла на:
<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 в фокусе |
Ubivectel,
выбор по фокусу. попробуй так. всё что выше убрать insertSmile: function (text) { let textarea = document.activeElement||document.forms.kideForm.txt; textarea.value += " " + text; textarea.focus({}); }, |
Заменил:
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({}); }, Так не срабатывают ни туда ни сюда ( |
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({}); }, |
Хм, сейчас клик по смайлику удаляет курсор из полей ...
|
Часовой пояс GMT +3, время: 04:17. |