Вставка текста при клике
Всем привет, нужен скрипт, который будет при клике по ссылке вставлять в поле ввода текст.
<form class="vbform" name="quick_reply" id="quick_reply"> <textarea dir="ltr" tabindex="-1" role="textbox"></textarea> </form> |
А где ссылка?
|
Faab, дак ссылка обычная же должна быть. <a href="#" onlick=здесь функция">
JS код дайте мне, пожалуйста |
<script> function insertText() { var formObject = document.getElementById("quick_reply"); console.log('1 ' + formObject); if(formObject){ textareaObject = formObject[0]; if(textareaObject){ var text = document.createTextNode('Your text'); // Тут ваш текст textareaObject.appendChild(text); // console.log('child : ' + textareaObject); }; }; }; </script> <a href="#" onclick="insertText()">insert</a> |
<form class="vbform" name="quick_reply" id="quick_reply"> <textarea dir="ltr" tabindex="-1" role="textbox"></textarea> </form> <span id="pseudolink">Нажми сюда!</span> <script> document.getElementById('pseudolink').onclick = function() { var text = 'Это вставляемый текст '; document.getElementById('quick_reply').getElementsByTagName('textarea')[0].value += text; } </script> |
У меня вопрос к знатокам, почему я не могу подцепить элемент textarea через getElementsByTagName(). Пример:
function insertText() { var formObject = document.getElementById("quick_reply"); // console.log('parent : ' + formObject); if(formObject){ textareaObject = formObject.getElementsByTagName("textarea")[0]; console.log('child : ' + textareaObject); // выводит undefined /* textareaObject = formObject[0]; if(textareaObject){ var text = document.createTextNode('Your text'); // Тут ваш текст textareaObject.appendChild(text); // console.log('child : ' + textareaObject); }; */ }; }; |
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
function insertText() { var formObject = document.getElementById("quick_reply"); if(formObject){ textareaObject = formObject.getElementsByTagName("textarea")[0]; console.log('child : ' + textareaObject); // undefined }; }; |
Не знаю, у меня нормально работает ваш код
В консоли: child : [object HTMLTextAreaElement] <form class="vbform" name="quick_reply" id="quick_reply"> <textarea dir="ltr" tabindex="-1" role="textbox"></textarea> </form> <a href="#" onclick="insertText(); return false">insert</a> <script> function insertText() { var formObject = document.getElementById("quick_reply"); if(formObject){ textareaObject = formObject.getElementsByTagName("textarea")[0]; console.log('child : ' + textareaObject); }; }; </script> |
Не знаю почему, но код не хочет выполняться. Может быть, потому что у textarea нету атрибута name?
|
Тестируй поэтапно.
Сначало убедитесь что скрипт подключён. Подстраховка: убедитесь что скрипт начинает работу после загрузки всей страницы. Ну и далее отслеживайте каждый этап. |
Цитата:
![]() А как мне узнать, начинает ли скрипт работу после загрузки всей страницы? |
JS
window.onload=function(){ // тут скрипт } JQuery $(document).ready(function(){ // тут скрипт }); А вообще яндекс вам тоже бы помог с этим вопросом. |
Faab, функция отрабатывает по событию клика. К тому моменту уже все загружено ведь :)
grisha2217, Приведи полный листинг своего html-файла. От и до. Только не идиотским скриншотом! |
Вложений: 1
danik.js, файл во вложениях
|
А вы в консоле точно смотрели результаты скрипта?
Замените в вашем скрепте строчки: var formObject = document.getElementById("quick_reply"); if(formObject){ textareaObject = formObject.getElementsByTagName("textarea")[0]; console.log('child : ' + textareaObject); }; на var text = 'Это вставляемый текст '; document.getElementById('quick_reply').getElementsByTagName('textarea')[0].value += text; Вы вставили отладочный скрипт, а не готовый вариант. |
Faab, как это посмотреть?
Я эту консоль открыл, не знаю, что делать дальше ![]() |
кликните "консоль" :) Console
|
Хах, интересный случай.
Когда нажимаешь на ссылку ничего не происходит, методом тыка я убрал return false. Т.е. получилось так: <a href="#" onclick="insertText();">insert</a> Я кликаю по ссылке - скрипт перемещает меня на главную, я нажимаю кнопку назад и уже там появляется текст. |
grisha2217,
Используйте <a> по назначению. А для навешивания событий есть куча других элементов. И тогда не нужно будет return false |
BETEPAH, проблема осталась.
Заменил <a> на <span>. Кликаю - ничего не происходит. Жму быстро назад, а потом вперед, в итоге текст появляется. Как быть? |
Выложи снова свой скрипт + html... Хочется посмотреть на новые свойства элемента span
|
Вложений: 1
Faab, во вложениях.
(Поиск: Insert!) Рядом будет скрипт |
...
|
Faab, может скажете, что не так?
|
У меня всё работает. Попробуйте так, хотя должно было и так работать:
<span style="padding-left:0; cursor: pointer;" id="spanButton" >Insert!</span> <script> window.onload = function(){ var eSpanButton = document.getElementById('spanButton'); eSpanButton.onclick = function(){ var text = 'TESTTEXT'; document.getElementById('quick_reply').getElementsByTagName('textarea')[0].value += text; }; }; </script> В консоле сообщений об ошибках нет? У вас столько скриптов - сам чёрт ногу сломит. |
Цитата:
|
Faab, это же целый движок
теперь вообще не работает. В консоли только ошибки CSS Скорее всего, проблема вовсе не в скрипте, а из-за движка. Видимо, мешают какие-то функции |
У меня работает... в консоле точно нет сообщений об ошибках?
|
Для теста создайте чистую HTML-страничку и пропишите:
<script> window.onload = function(){ var eSpanButton = document.getElementById('spanButton'); eSpanButton.onclick = function(){ var text = 'TESTTEXT'; document.getElementById('quick_reply').getElementsByTagName('textarea')[0].value += text; }; }; </script> <span style="padding-left:0; cursor: pointer;" id="spanButton" >Insert!</span> <form class="vbform" name="quick_reply" id="quick_reply" > <textarea dir="ltr" tabindex="-1" role="textbox"></textarea> </form> |
Faab, на тестовой страничке все прекрасно работает.
Блин, может мне вам ссылку с тестовым аккаунтом скинуть? Глянете... |
Нусс.. перебирайте движок. И в третий раз, ещё раз посоветую: заглядываете в консоль, если работаете с JS.
|
Faab, спасибо. Учту.
|
Цитата:
Попробуйте начать сначала, и устанавливать скрипты по очереди.. если не вариант, то зайдите на ветку "работа". За небольшую плату вам найдут ошибку.. поторгуетесь если что, они тоже люди )). |
Faab, сторонних скриптов там очень мало, это ссылка на источник, подгрузка страницы на jquery и spoiler,а остальное относится к движку
|
А может кто-нибудь тут подсказать ответ?
http://javascript.ru/forum/showthread.php?p=296090 |
Часовой пояс GMT +3, время: 18:56. |