Battle Forum

Battle Forum (http://battlefox.rooty.ru/index.php)
-   Web-программирование / Сайтостроение (http://battlefox.rooty.ru/forumdisplay.php?f=110)
-   -   Передача текста в textarea (http://battlefox.rooty.ru/showthread.php?t=14254)

SuperSkat 12.05.2010 14:32

Передача текста в textarea
 
Привет всем, возникла необходимость сделать цитирование посредством ajax, есть сообщение, при нажатии на кнопку текст из него должен вставляться в textarea.
Пробовал несколькими способами:
Код:

onClick="parent.document.compose.body.value +='{quote=имя пользователя}текст сообщения{/quote}';return false;
Код:

function qpost(){
document.getElementById("area").value += '{quote=имя пользователя}текст сообщения{/quote}';}

В обоих случаях, если есть перенос строки в сообщение, скрипт не работает, если всё в одну строчку- работает замечательно.

* заменил "[" на "{" чтобы нормально отображало.

NOboDy 12.05.2010 14:56

Я так понимаю, приведенные куски кода вставляются в html при генерации страницы?
Если так, то используешь ли при вставке пользовательского текста функцию htmlspecialchars()?
Это если страница генерица на php. Если нет, то это черевато
наличием на странице CSS (Cross site scripting), а не только тем, что есть.

SuperSkat 12.05.2010 17:00

NOboDy, htmlspecialchars использую, генерируется информация в пхп файлике, информация берётся иб бд.
PHP код:

?><script type="text/javascript">
function qpost(){document.getElementById("area").value += '[quote=<?=$arr['username']?>]<?=htmlspecialchars($arr['body'])?>[/quote]';}
</script>
<?        
$botr = "<a class=\"altlink_white\" href=\"javascript:qpost()\">цитировать</a>&nbsp;";


Ringo 12.05.2010 17:33

SuperSkat, а в чём не рабочесть скрипта проявляется?

NOboDy 12.05.2010 17:36

Упс.
С htmlspecialchars() я погорячился. Она не кодирует LF. А оно в теле js-строк должно быть заменено на \n.
Попробуй так
PHP код:

<script type="text/javascript"> 
function qpost(){
document.getElementById("area").value += 
'[quote=<?=$arr['username']?>]<?=htmlspecialchars(preg_replace('/\n/','\n',$arr['body']))?>[/quote]';

</script>


Ringo 12.05.2010 17:41

NOboDy, может тогда лучше заменять \n на <br>?

NOboDy 12.05.2010 17:43

Тогда в textarea получится именно <br>. Я так понял нужно не это.

Ringo 12.05.2010 17:49

Цитата:

Сообщение от NOboDy (Сообщение 442605)
Тогда в textarea получится именно <br>. Я так понял нужно не это.

Простите, я туплю. Воркс файн (:

SuperSkat 12.05.2010 17:58

Ringo, проблема в том, что если сообщение состоит из 2-х строк:
Цитата:

1. xxxxxxxxx
2. yyyyyyy
то процитировать невозможно, просто ничего не происходит.
<br/> не нужен)

NOboDy, preg_replace не работает, всё равно не хочет цитировать

NOboDy 12.05.2010 18:06

В сырцах страницы при наличии двух строк что получается?
При этом
Цитата:

Сообщение от SuperSkat (Сообщение 442613)
1. xxxxxxxxx
2. yyyyyyy

должно быть что-то вроде
PHP код:

'[quote=имя пользователя]1. xxxxxxxxx\n2. yyyyyyy[/quote]' 


Ringo 12.05.2010 18:13

Цитата:

Сообщение от SuperSkat (Сообщение 442613)
то процитировать невозможно, просто ничего не происходит.
<br/> не нужен)

Я уже проверил.
Проверил так же код NOboDy, как уже писал работает нормально.

SuperSkat 12.05.2010 18:19

PHP код:

<script type="text/javascript"
function 
qpost(){document.getElementById("area").value += '[quote=superskat]апроапорапроапроапро
\nмкелдтидут[/quote]'
;}
</script> 

PHP код:

<class="altlink_white" href="#" onClick="parent.document.compose.body.focus();parent.document.compose.body.value +='[quote=superskat]апроапорапроапроапро
\nмкелдтидут[/quote]';return false;"
><b>[Цитировать]</b></a

Вот такая штука.
Возможно проблема в том, что я использую текстовый редактор markItUp?

Ringo 12.05.2010 18:28

SuperSkat, http://rng.selfip.net/blackmarket/v03/1.php - Скопипастил твой код (правая кнопка) - всё работает.

SuperSkat 12.05.2010 18:38

Видимо, это загадочный движок всё портит)

NOboDy 12.05.2010 18:52

SuperSkat,
У тебя в цитате строка все равно получается разбитой на 2 части переводом строки.
Такое должно быть от preg_replace('/(\n)/','\1\n',$arr['body']). После preg_replace('/\n/','\n',$arr['body'])
такого быть не может, просто потому, что не может быть. :)
Как у тебя это получается - мне непонятно.

В живую на все это где-нибудь реально поглядеть?

SuperSkat 12.05.2010 23:46

NOboDy, реально, ссылку в лс вышлю.

Добавлено через 4 часа 47 минут
Сделал вот так:
PHP код:

<script type="text/javascript">
function 
qpost(postidbody)
{
jQuery.get("forum.php",{"action""quotepost""postid"postid"qbody"body});}</script> 

Работает как надо, осталось только передать данные)

Ringo 13.05.2010 00:19

SuperSkat, а замена <br /> не помогла?

SuperSkat 13.05.2010 15:16

метод с jQuerry - бред.
Ringo, не работает чего-то у меня замена <br />.. я ещё не совсем понял как его заменить:
PHP код:

$qqbody preg_replace('<br />','\n',$qqbody); 

Хотя при просмотре исходного кода всё как надо:
Само сообщение:
PHP код:

<b>superskat</b>, привет,<br /> 
что за крякозябры

Код кнопки:
PHP код:

<class="altlink_white" href="#" onClick="parent.document.compose.body.value+='[quote=%username%][B]superskat[/B], привет,
\nчто за крякозябры! :-D[/quote]';return false;"
><b>[Мультицитирование]</b></a>> 


Ringo 14.05.2010 01:06

SuperSkat, там перед \n - перенос строки, он и мешает.


Текущее время: 18:10. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot