Просмотр полной версии : Передача текста в textarea
SuperSkat
12.05.2010, 14:32
Привет всем, возникла необходимость сделать цитирование посредством ajax, есть сообщение, при нажатии на кнопку текст из него должен вставляться в textarea.
Пробовал несколькими способами:
onClick="parent.document.compose.body.value +='{quote=имя пользователя}текст сообщения{/quote}';return false;
function qpost(){
document.getElementById("area").value += '{quote=имя пользователя}текст сообщения{/quote}';}
В обоих случаях, если есть перенос строки в сообщение, скрипт не работает, если всё в одну строчку- работает замечательно.
* заменил "[" на "{" чтобы нормально отображало.
Я так понимаю, приведенные куски кода вставляются в html при генерации страницы?
Если так, то используешь ли при вставке пользовательского текста функцию htmlspecialchars()?
Это если страница генерица на php. Если нет, то это черевато
наличием на странице CSS (Cross site scripting), а не только тем, что есть.
SuperSkat
12.05.2010, 17:00
NOboDy, htmlspecialchars использую, генерируется информация в пхп файлике, информация берётся иб бд.
?><script type="text/javascript">
function qpost(){document.getElementById("area").value += '?>]<?=htmlspecialchars($arr['body'])?>';}
</script>
<?
$botr = "<a class=\"altlink_white\" href=\"javascript:qpost()\">цитировать</a> ";
SuperSkat, а в чём не рабочесть скрипта проявляется?
Упс.
С htmlspecialchars() я погорячился. Она не кодирует LF. А оно в теле js-строк должно быть заменено на \n.
Попробуй так
<script type="text/javascript">
function qpost(){
document.getElementById("area").value +=
'?>]<?=htmlspecialchars(preg_replace('/\n/','\n',$arr['body']))?>';
}
</script>
NOboDy, может тогда лучше заменять \n на <br>?
Тогда в textarea получится именно <br>. Я так понял нужно не это.
Тогда в textarea получится именно <br>. Я так понял нужно не это.
Простите, я туплю. Воркс файн (:
SuperSkat
12.05.2010, 17:58
Ringo, проблема в том, что если сообщение состоит из 2-х строк:
1. xxxxxxxxx
2. yyyyyyy
то процитировать невозможно, просто ничего не происходит.
<br/> не нужен)
NOboDy, preg_replace не работает, всё равно не хочет цитировать
В сырцах страницы при наличии двух строк что получается?
При этом
1. xxxxxxxxx
2. yyyyyyy
должно быть что-то вроде
'1. xxxxxxxxx\n2. yyyyyyy'
то процитировать невозможно, просто ничего не происходит.
<br/> не нужен)
Я уже проверил.
Проверил так же код NOboDy, как уже писал работает нормально.
SuperSkat
12.05.2010, 18:19
<script type="text/javascript">
function qpost(){document.getElementById("area").value += 'апроапорапроапроапро
\nмкелдтидут';}
</script>
<a class="altlink_white" href="#" onClick="parent.document.compose.body.focus();parent.docume nt.compose.body.value +='апроапорапроапроапро
\nмкелдтидут';return false;"><b>[Цитировать]</b></a>
Вот такая штука.
Возможно проблема в том, что я использую текстовый редактор markItUp?
SuperSkat, http://rng.selfip.net/blackmarket/v03/1.php - Скопипастил твой код (правая кнопка) - всё работает.
SuperSkat
12.05.2010, 18:38
Видимо, это загадочный движок всё портит)
SuperSkat,
У тебя в цитате строка все равно получается разбитой на 2 части переводом строки.
Такое должно быть от preg_replace('/(\n)/','\1\n',$arr['body']). После preg_replace('/\n/','\n',$arr['body'])
такого быть не может, просто потому, что не может быть. :)
Как у тебя это получается - мне непонятно.
В живую на все это где-нибудь реально поглядеть?
SuperSkat
12.05.2010, 23:46
NOboDy, реально, ссылку в лс вышлю.
Добавлено через 4 часа 47 минут
Сделал вот так:
<script type="text/javascript">
function qpost(postid, body)
{jQuery.get("forum.php",{"action": "quotepost", "postid": postid, "qbody": body});}</script>
Работает как надо, осталось только передать данные)
SuperSkat, а замена <br /> не помогла?
SuperSkat
13.05.2010, 15:16
метод с jQuerry - бред.
Ringo, не работает чего-то у меня замена <br />.. я ещё не совсем понял как его заменить:
$qqbody = preg_replace('<br />','\n',$qqbody);
Хотя при просмотре исходного кода всё как надо:
Само сообщение:
<b>superskat</b>, привет,<br />
что за крякозябры!
Код кнопки:
<a class="altlink_white" href="#" onClick="parent.document.compose.body.value+='superskat, привет,
\nчто за крякозябры! :-D';return false;"><b>[Мультицитирование]</b></a>>
SuperSkat, там перед \n - перенос строки, он и мешает.
vBulletin® v3.8.4, Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot