Вставка текста при клике
Всем привет, нужен скрипт, который будет при клике по ссылке вставлять в поле ввода текст.
<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, время: 13:26. |