Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   проблема переносов в textarea (https://javascript.ru/forum/misc/2032-problema-perenosov-v-textarea.html)

rooker 23.10.2008 10:36

проблема переносов в textarea
 
<form action... name=saveform>
<textarea name=save_text>aaa
bbb
ccc
ddd</textarea>
<input type=button onclick="javascript:windows.open(.../.../index.php&act=News&text='saveform.save_text.value' )">
</form>

вроде понятно написал, пытаюсь передать текст с переносом строки в другую форму, но получаю там
без переносов
echo $text выводит "аaabbbcccddd"

подскажите что сделать???

Kolyaj 23.10.2008 10:56

Если нужно просто вывести текст на страницу, то, как минимум,
echo nl2br($text);

Т.е. переносы строк заменить на html-ные переносы строк (<br>).

rooker 23.10.2008 11:08

это не проканает, так как текст уже приходит без пробелов, они сжираются. nl2br выдаст aaabbbcccddd

twolf 23.10.2008 11:33

Так вы GET'ом передаете данные формы. какие могут быть переносы.
Не проще ли сабмит съэмулировать

rooker 24.10.2008 03:27

нет не проще. если бы было можно, то и вопроса бы не было. на сабмите другое действие.

twolf 24.10.2008 11:25

тогда Ajax

rooker 25.10.2008 10:43

а примерчик, не особо знаком с ajax

Kos 25.10.2008 13:34

Попробуй у textarea добавить свойство wrap="physical".

А вообще вот вам ссылочка на хороший ресурс http://html.manual.ru/

rooker 27.10.2008 07:00

wrap="physical" стоит у textarea
при отправле GETom сжираются пробелы. т.е. если алертом вывести save_text будет нормально
aaa
bbb
ccc
ddd
а вот в новом окне при выводе на печать получаю
aaabbbcccddd

Kos 27.10.2008 12:44

вот вам java версия ф-ции nl2br:
function nl2br(s) {
	s = s.split("\u000A").join("<br />\u000A");
	return s;
}

magistr_bender 27.10.2008 18:52

Цитата:

Сообщение от rooker
при отправле GETom сжираются пробелы. т.е. если алертом вывести save_text будет нормально

прэгом можно исправить, заменяя символ пробела на хтмл сущьность

Kolyaj 27.10.2008 18:56

rooker,
может вы уже, наконец, код выложите, чтобы прекратить гадания?

rooker 28.10.2008 05:02

код был в начале выложен, что еще нужно.

function nl2br(s) {
s = s.split("\u000A").join("<br />\u000A");
return s;
}

помогла, но вот только текст перенесся не весь, обрезался.
alert вывел весь текст, а в окне обрезался. как будто лимит какой-то есть

Kolyaj 28.10.2008 10:01

Цитата:

Сообщение от rooker
<input type=button onclick="javascript:windows.open(.../.../index.php&act=News&text='saveform.save_text.value' )">

Этот код даже теоретически работать не может.

Цитата:

Сообщение от rooker
как будто лимит какой-то есть

Есть лимит на количество символов в get-запросе.

rooker 28.10.2008 10:48

вот код
<form enctype='multipart/form-data' action="http://domen.ru/index.php?act=Profile&CODE=21" method="post" name="saveform2">
<TABLE class=html cellSpacing=0 cellPadding=5 border=0>
<TBODY>
<tr class=nohover>
<td id='board' valign='top'><span CLASS=text>Текст объявления *</span><br>
<textarea rows='2' cols='75' name='board' wrap='physical'></textarea></td>
</tr>
<tr class=nohover>
<td CLASS=TopData align='left' colspan='1'><input type='submit' value='Разместить'>&nbsp;<input type='button' value='Предпросмотр' onclick='javascript: preview_pop(board.value);' name='REPLIER' method='POST'></td>
</tr>
</TBODY></TABLE>
</form>


function preview_pop(text)
{
text = text.split("\u000A").join("<br />\u000A");
window.open('http://domen.ru/index.php?act=buddy&CODE=10&text='+text,'width=750 ,height=600,resizable=yes,scrollbars=yes');
}

вот такой код. функция вызывает pop-up окно с предпросмотром того, что мы ввели в textarea

но в окне видим текст не весь а 2000 символов и абзац...

Kolyaj 28.10.2008 13:27

Цитата:

Сообщение от rooker
но в окне видим текст не весь а 2000 символов и абзац...

Потому что длина урл имеет ограничение.

Kos 28.10.2008 13:59

Ну тогда действительно аякс вам в помощь

Kolyaj 28.10.2008 14:01

Kos,
а вы что подразумеваете под этим загадочным словом аякс?

Kos 28.10.2008 14:24

Ajax я подразумеваю, надеюсь это расписывать не надо

Kolyaj 28.10.2008 14:29

Именно, что надо. Каждый под этим словом свое, почему-то, понимает.

Kos 28.10.2008 15:06

В целом все понимают одно и то же. Давайте не будем устраивать здесь дискуссию (эта тема не для того). Если вам так интересно - здесь рядом есть раздел, посвященный аяксу.

Kolyaj 28.10.2008 15:14

Ну хотя бы скажите, зачем в данной задаче аякс?

Kos 28.10.2008 15:21

Можно отпраить содержимое textarea на сервер в нормальном виде, там допустим сохранить их или еще что. После этого запустить второй скрипт через window.open который заберет эти данные, при этом можно даже передать ему указатель на сохраненные данные. А если использовать файл, то после того, как от туда будут взяты данные его удалить, дабы избежать наполнения мусором.

Kolyaj 28.10.2008 15:39

А что мешает напрямую передать, без сервера?

Kos 28.10.2008 16:03

Если вы снова про $_GET - читайте выше

Kolyaj 28.10.2008 16:06

Ну хотя бы в открываемом окне вызвать
alert(opener.document.getElementById('board').value);

Kos 28.10.2008 16:09

Ему эти данные, как я понял нужны во время выполнения скрипта, до появления у клиента

Kolyaj 28.10.2008 16:12

Ну тогда post.

Kos 28.10.2008 16:17

Как? Если знаете напишите, мне тоже будет интересно.

Kolyaj 28.10.2008 16:23

Ну я так понимаю, проблема только в открытии попапа? Можно я код писать не буду?

С помощью window.open открываем окно с заданным name, потом динамически создаем форму с method=post и target=<вышеуказанное name>, создаем в ней нужные элементы и делаем ей submit.

Kos 28.10.2008 16:31

Не легче ли аяксом :)

Хотя если автор поста не знает аякс, тогда, действительно, пусть использует ваш метод

Kolyaj 28.10.2008 16:41

Для вашего варианта неоправданно усложнится серверная часть. И проблема тут не в аяксе, как таковом, а в том, что необходимо делать 2 запроса на сервер и сохранять состояние между этими двумя запросами, а после второго запроса еще и подчищать за собой.

rooker 29.10.2008 03:11

Цитата:

Сообщение от Kolyaj (Сообщение 7728)
Ну я так понимаю, проблема только в открытии попапа? Можно я код писать не буду?

А можно, если не трудно, привести код, буду очень признателен

rooker 31.10.2008 05:44

Kolyaj если не затруднит, можно тему добить до конца, приведите код, что-то я сам не пойму как сделать


Часовой пояс GMT +3, время: 05:02.