Ответ
 
Опции темы
Старый 12.05.2010, 14:32      #1
SuperSkat
Местный
 
Аватар для SuperSkat
По умолчанию Передача текста в textarea

Привет всем, возникла необходимость сделать цитирование посредством ajax, есть сообщение, при нажатии на кнопку текст из него должен вставляться в textarea.
Пробовал несколькими способами:
Код:
onClick="parent.document.compose.body.value +='{quote=имя пользователя}текст сообщения{/quote}';return false;
Код:
function qpost(){
document.getElementById("area").value += '{quote=имя пользователя}текст сообщения{/quote}';}
В обоих случаях, если есть перенос строки в сообщение, скрипт не работает, если всё в одну строчку- работает замечательно.

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

Последний раз редактировалось SuperSkat; 12.05.2010 в 14:36.
SuperSkat вне форума Пол: Мужчина   Ответить с цитированием Вверх
Старый 12.05.2010, 14:56      #2
NOboDy
Пользователь
 
Аватар для NOboDy
По умолчанию

Я так понимаю, приведенные куски кода вставляются в html при генерации страницы?
Если так, то используешь ли при вставке пользовательского текста функцию htmlspecialchars()?
Это если страница генерица на php. Если нет, то это черевато
наличием на странице CSS (Cross site scripting), а не только тем, что есть.
NOboDy вне форума   Ответить с цитированием Вверх
Старый 12.05.2010, 17:00      #3
SuperSkat
Местный
 
Аватар для SuperSkat
По умолчанию

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;";
__________________
wish you were here

Последний раз редактировалось SuperSkat; 12.05.2010 в 17:00.
SuperSkat вне форума Пол: Мужчина   Ответить с цитированием Вверх
Старый 12.05.2010, 17:33      #4
Ringo
Местный
 
Аватар для Ringo
По умолчанию

SuperSkat, а в чём не рабочесть скрипта проявляется?
__________________
Und wie du wieder aussiehst, Löcher in der Hose und ständig dieser Lärm...
Elektrische Gitarren und immer diese Texte...
Ringo вне форума   Ответить с цитированием Вверх
Старый 12.05.2010, 17:36      #5
NOboDy
Пользователь
 
Аватар для NOboDy
По умолчанию

Упс.
С 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>

Последний раз редактировалось NOboDy; 12.05.2010 в 17:52.
NOboDy вне форума   Ответить с цитированием Вверх
Старый 12.05.2010, 17:41      #6
Ringo
Местный
 
Аватар для Ringo
По умолчанию

NOboDy, может тогда лучше заменять \n на <br>?
__________________
Und wie du wieder aussiehst, Löcher in der Hose und ständig dieser Lärm...
Elektrische Gitarren und immer diese Texte...
Ringo вне форума   Ответить с цитированием Вверх
Старый 12.05.2010, 17:43      #7
NOboDy
Пользователь
 
Аватар для NOboDy
По умолчанию

Тогда в textarea получится именно <br>. Я так понял нужно не это.
NOboDy вне форума   Ответить с цитированием Вверх
Старый 12.05.2010, 17:49      #8
Ringo
Местный
 
Аватар для Ringo
По умолчанию

Сообщение от NOboDy Посмотреть сообщение
Тогда в textarea получится именно <br>. Я так понял нужно не это.
Простите, я туплю. Воркс файн (:
__________________
Und wie du wieder aussiehst, Löcher in der Hose und ständig dieser Lärm...
Elektrische Gitarren und immer diese Texte...
Ringo вне форума   Ответить с цитированием Вверх
Старый 12.05.2010, 17:58      #9
SuperSkat
Местный
 
Аватар для SuperSkat
По умолчанию

Ringo, проблема в том, что если сообщение состоит из 2-х строк:
Цитата:
1. xxxxxxxxx
2. yyyyyyy
то процитировать невозможно, просто ничего не происходит.
<br/> не нужен)

NOboDy, preg_replace не работает, всё равно не хочет цитировать
__________________
wish you were here

Последний раз редактировалось SuperSkat; 12.05.2010 в 17:58.
SuperSkat вне форума Пол: Мужчина   Ответить с цитированием Вверх
Старый 12.05.2010, 18:06      #10
NOboDy
Пользователь
 
Аватар для NOboDy
По умолчанию

В сырцах страницы при наличии двух строк что получается?
При этом
Сообщение от SuperSkat Посмотреть сообщение
1. xxxxxxxxx
2. yyyyyyy
должно быть что-то вроде
PHP код:
'[quote=имя пользователя]1. xxxxxxxxx\n2. yyyyyyy[/quote]' 
NOboDy вне форума   Ответить с цитированием Вверх
Старый 12.05.2010, 18:13      #11
Ringo
Местный
 
Аватар для Ringo
По умолчанию

Сообщение от SuperSkat Посмотреть сообщение
то процитировать невозможно, просто ничего не происходит.
<br/> не нужен)
Я уже проверил.
Проверил так же код NOboDy, как уже писал работает нормально.
__________________
Und wie du wieder aussiehst, Löcher in der Hose und ständig dieser Lärm...
Elektrische Gitarren und immer diese Texte...
Ringo вне форума   Ответить с цитированием Вверх
Старый 12.05.2010, 18:19      #12
SuperSkat
Местный
 
Аватар для SuperSkat
По умолчанию

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?
__________________
wish you were here
SuperSkat вне форума Пол: Мужчина   Ответить с цитированием Вверх
Старый 12.05.2010, 18:28      #13
Ringo
Местный
 
Аватар для Ringo
По умолчанию

SuperSkat, http://rng.selfip.net/blackmarket/v03/1.php - Скопипастил твой код (правая кнопка) - всё работает.
__________________
Und wie du wieder aussiehst, Löcher in der Hose und ständig dieser Lärm...
Elektrische Gitarren und immer diese Texte...
Ringo вне форума   Ответить с цитированием Вверх
Старый 12.05.2010, 18:38      #14
SuperSkat
Местный
 
Аватар для SuperSkat
По умолчанию

Видимо, это загадочный движок всё портит)
__________________
wish you were here
SuperSkat вне форума Пол: Мужчина   Ответить с цитированием Вверх
Старый 12.05.2010, 18:52      #15
NOboDy
Пользователь
 
Аватар для NOboDy
По умолчанию

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

В живую на все это где-нибудь реально поглядеть?
NOboDy вне форума   Ответить с цитированием Вверх
Старый 12.05.2010, 23:46      #16
SuperSkat
Местный
 
Аватар для SuperSkat
По умолчанию

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

Добавлено через 4 часа 47 минут
Сделал вот так:
PHP код:
<script type="text/javascript">
function 
qpost(postidbody)
{
jQuery.get("forum.php",{"action""quotepost""postid"postid"qbody"body});}</script> 
Работает как надо, осталось только передать данные)
__________________
wish you were here

Последний раз редактировалось SuperSkat; 12.05.2010 в 23:47.
SuperSkat вне форума Пол: Мужчина   Ответить с цитированием Вверх
Старый 13.05.2010, 00:19      #17
Ringo
Местный
 
Аватар для Ringo
По умолчанию

SuperSkat, а замена <br /> не помогла?
__________________
Und wie du wieder aussiehst, Löcher in der Hose und ständig dieser Lärm...
Elektrische Gitarren und immer diese Texte...
Ringo вне форума   Ответить с цитированием Вверх
Старый 13.05.2010, 15:16      #18
SuperSkat
Местный
 
Аватар для SuperSkat
По умолчанию

метод с 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>> 
__________________
wish you were here

Последний раз редактировалось SuperSkat; 13.05.2010 в 15:21.
SuperSkat вне форума Пол: Мужчина   Ответить с цитированием Вверх
Старый 14.05.2010, 01:06      #19
Ringo
Местный
 
Аватар для Ringo
По умолчанию

SuperSkat, там перед \n - перенос строки, он и мешает.
__________________
Und wie du wieder aussiehst, Löcher in der Hose und ständig dieser Lärm...
Elektrische Gitarren und immer diese Texte...
Ringo вне форума   Ответить с цитированием Вверх
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Стихи. iva Книжная полка 278 31.07.2011 15:36
Работа с текстом: Чтение текста голосом Slava BattleSoft Navigator 0 17.11.2009 12:04
Передача файла в другой город zloy_kaktus Web-пространство 23 20.11.2006 15:25


Обратная связь
Текущее время: 10:04. Часовой пояс GMT +3.


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