Имеется форма с именем "re", в ней TEXTAREA с именем "txt"
Как сделать, чтобы при нажатии на кнопку в TEXTAREA вставлялся какой-либо текст?
1. Cheriksoft - 05 Декабря, 2007 - 11:59:02 - перейти к сообщению
2. TvoyWeb - 06 Декабря, 2007 - 00:04:27 - перейти к сообщению
document.re.txt.value = 'Твой вставляемый текст';
3. Cheriksoft - 06 Декабря, 2007 - 05:32:25 - перейти к сообщению
TvoyWeb пишет:
document.re.txt.value = 'Твой вставляемый текст';
Это просто заменяет текст.
Для добавления я уже нашел:
CODE:
document.re.txt.value+='Мой вставляемый текст';
Но при этом текст добавляется в конец.
Как сделать, чтобы он добавлялся в позицию курсора?
4. TvoyWeb - 06 Декабря, 2007 - 22:18:05 - перейти к сообщению
Cheriksoft пишет:
Как сделать, чтобы при нажатии на кнопку в TEXTAREA вставлялся какой-либо текст?
Здесь ничего не сказано о вставке текста в положение курсора.
Чтобы вставить текст нужно определить положение курсора в текстареа. Открой яваскрипт форума http://tvoyweb.ru/forums/javascript/formcode.js и изучай
5. Cheriksoft - 07 Декабря, 2007 - 14:09:22 - перейти к сообщению
CODE:
<script type="text/javascript" language="JavaScript">
<!--
function replaceSelectedText(obj,cbFunc)
{
obj.focus();
if (document.selection)
{
var s = document.selection.createRange();
eval("s.text="+cbFunc+"(s.text);");
s.select();
return true;
}
else if (typeof(obj.selectionStart)=="number")
{
if (obj.selectionStart!=obj.selectionEnd)
{
var start = obj.selectionStart;
var end = obj.selectionEnd;
eval("var rs = "+cbFunc+"(obj.value.substr(start,end-start));");
obj.value = obj.value.substr(0,start)+rs+obj.value.substr(end);
obj.setSelectionRange(end,end);
}
return true;
}
return false;
}
function b(s){return '[b]'+s+'[/b]';}
//-->
</script>
<form name="test" action="myscript.php" method="post">
<input type="button" value="B" onClick="replaceSelectedText(document.test.text,'b');"><br>
<textarea name="text" rows=5 cols=20></textarea><br>
<input name="t"><br>
</form>
<script type="text/javascript" language="JavaScript">
<!--
function replaceSelectedText(obj,cbFunc)
{
obj.focus();
if (document.selection)
{
var s = document.selection.createRange();
eval("s.text="+cbFunc+"(s.text);");
s.select();
return true;
}
else if (typeof(obj.selectionStart)=="number")
{
if (obj.selectionStart!=obj.selectionEnd)
{
var start = obj.selectionStart;
var end = obj.selectionEnd;
eval("var rs = "+cbFunc+"(obj.value.substr(start,end-start));");
obj.value = obj.value.substr(0,start)+rs+obj.value.substr(end);
obj.setSelectionRange(end,end);
}
return true;
}
return false;
}
function b(s){return '[b]'+s+'[/b]';}
//-->
</script>
<form name="test" action="myscript.php" method="post">
<input type="button" value="B" onClick="replaceSelectedText(document.test.text,'b');"><br>
<textarea name="text" rows=5 cols=20></textarea><br>
<input name="t"><br>
</form>
В ИЕ при нажатии на "В", если выделен какой то текст, то он окружается
CODE:
[b][/b]
Если ничего не выделено, то просто вставляется на позицию курсора
CODE:
[b][/b]
В лисе первое происходит, второе - нет...
6. UFO - 12 Мая, 2009 - 11:59:26 - перейти к сообщению
Сорри, что апаю такую старую тему, но у меня много аналогичных вопросов.
Во-первых, как добавить свой текст в начало текста в textarea при нажатии кнопки?
Во-вторых, как в JS в этом же месте проверить, что в PHP существует GET-переменная $id (т.е. в строке браузера есть такие буквы, как &id=...)? Можно еще, конечно, проверить, что $id, передаваемая в JS не ноль и цифра, но это не так важно. Сейчас я это пытаюсь делать так:
Но это не работает, т.к. не выводится ничего вместо $id (пробовал уже по-всякому писать - все равно не выводит ничего!).
Пока нету никакой проверки на то, существует ли $id или нет, ибо даже без проверки не работает. Да и с JS не знаком - не знаю как там будет выглядеть это, if, а дальше не понятно
Где-то выше в PHP существует
так что, переменная определена.
Цель всего этого - в блоге будут ссылки вида page.php?tra-ta-ta=guestbook&id=2, нажимая на неё пользователь попадает в гостевую книгу, где будет определен id записи, если пользователь ничего не сотрет в адресной строке, то нажав кнопку добавиться подпись о том, какую запись он комментирует. Делать возможность комментирования каждой записи не хочу, т.к. блог маленький, пусть лучше весь поток сознания будет в одном месте - в гостевой книге
Во-первых, как добавить свой текст в начало текста в textarea при нажатии кнопки?
Во-вторых, как в JS в этом же месте проверить, что в PHP существует GET-переменная $id (т.е. в строке браузера есть такие буквы, как &id=...)? Можно еще, конечно, проверить, что $id, передаваемая в JS не ноль и цифра, но это не так важно. Сейчас я это пытаюсь делать так:
CODE:
<input type="submit" value="Добавить" onClick="document.record.body.value+='Комментарий к записи № <? echo "$id"; ?>';">
Но это не работает, т.к. не выводится ничего вместо $id (пробовал уже по-всякому писать - все равно не выводит ничего!).
Пока нету никакой проверки на то, существует ли $id или нет, ибо даже без проверки не работает. Да и с JS не знаком - не знаю как там будет выглядеть это, if, а дальше не понятно
Где-то выше в PHP существует
CODE:
$id = @(int)$_GET['id'];
так что, переменная определена.
Цель всего этого - в блоге будут ссылки вида page.php?tra-ta-ta=guestbook&id=2, нажимая на неё пользователь попадает в гостевую книгу, где будет определен id записи, если пользователь ничего не сотрет в адресной строке, то нажав кнопку добавиться подпись о том, какую запись он комментирует. Делать возможность комментирования каждой записи не хочу, т.к. блог маленький, пусть лучше весь поток сознания будет в одном месте - в гостевой книге
7. UFO - 12 Мая, 2009 - 16:37:19 - перейти к сообщению
Насколько я понял, по второму пункту: все дело в том, что переменная из GET, вот она и не выводится. Может кто предложит другой вариант вывода? И что-нибудь по первому пункту тоже?
8. Furax - 13 Мая, 2009 - 03:52:02 - перейти к сообщению
UFO пишет:
С точки зрения PHP никакой разницы в вывод переменной то, откуда взялось её значения, не вносит.Насколько я понял, по второму пункту: все дело в том, что переменная из GET, вот она и не выводится.
Информацию о том, установлена ли эта переменная, можно вывести так:
CODE:
var idSet = <?php echo (isSet($_GET['id']) ? 'true' : 'false'); ?>;
Однако для получения в JavaScript значений (и информации о заданности) GET-переменных PHP вообще не нужен, всё это можно сделать средствами самого JS, например, так (в начале страницы):
CODE:
И далее в нужном месте:var _GET = [];
var gets = location.search.slice(1).split('&');
for (var i = 0; i < gets.length; ++i)
{
var current = gets[i].split('=');
if (current.length == 2)
_GET[current[0]] = unescape(current[1]);
}
var gets = location.search.slice(1).split('&');
for (var i = 0; i < gets.length; ++i)
{
var current = gets[i].split('=');
if (current.length == 2)
_GET[current[0]] = unescape(current[1]);
}
CODE:
if (_GET['id'] && parseInt(_GET['id']) != NaN)
document.record.body.value+='Комментарий к записи № '+_GET['id'] + document.record.body.value;
document.record.body.value+='Комментарий к записи № '+_GET['id'] + document.record.body.value;
Если же хочется всё же задействовать PHP, то я бы сделал так:
CODE:
if (isSet($_GET['id']) && (string)($id = (int)$_GET['id']) == $_GET['id'])
echo <<< EOF
<input type="submit" value="Добавить" onClick="document.record.body.value+='Комментарий к записи № $id';">
EOF;
echo <<< EOF
<input type="submit" value="Добавить" onClick="document.record.body.value+='Комментарий к записи № $id';">
EOF;
9. UFO - 13 Мая, 2009 - 15:15:11 - перейти к сообщению
Спасибо большое, работает, сделал с задействованием PHP
Теперь бы выяснить как сделать чтобы в начало добавлялось, а не в конец. Это уже чисто какую JS-функцию использовать надо знать...
Теперь бы выяснить как сделать чтобы в начало добавлялось, а не в конец. Это уже чисто какую JS-функцию использовать надо знать...
10. Furax - 13 Мая, 2009 - 22:47:38 - перейти к сообщению
CODE:
document.record.body.value+='Комментарий к записи № $id' + document.record.body.value;