Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Как вставить текст с переводом строк? (https://javascript.ru/forum/jquery/20858-kak-vstavit-tekst-s-perevodom-strok.html)

Serg_pnz 20.08.2011 08:32

Как вставить текст с переводом строк?
 
$('#log').html('text text
text text');

не работает

walik 20.08.2011 10:00

Многострочная переменная в javascript


var txt = "text text \n text text";
alert(txt);

melky 20.08.2011 11:28

a = " это очень,*!*\*/!*
 очень длинная строка"

alert(a)

NeoMurderer 21.08.2011 18:10

А может просто <br/> поставить?

tadjik1 23.08.2011 12:51

я бы тоже через <br /> код html вставлял.

Serg_pnz 23.08.2011 15:18

Не-а, не работает.
Это нужно для формы обратной связи, что бы не отправляли "Войну и мир" в textarea. Обрезать текст до 1000 знаков не вопрос, а вот обновить поле не получается
$txt = nl2br("dfvdfvdf
dfvdfv
dfvdfv");
$txt = preg_replace('/\n|\r/sui', '',$txt);
echo '<script>$(\'#ftxt\').val(\''.$txt.'\');</script>';


Вставляет
dfvdfvdf<br />dfvdfv<br />dfvdfv

ваый 23.08.2011 15:32

Цитата:

Сообщение от Serg_pnz
Вставляет
dfvdfvdf<br />dfvdfv<br />dfvdfv

Ну естественно, ты же nl2br делаешь. После этого preg_replace('/\n|\r/sui', '',$txt) вообще не имеет смысла. nl2br не нужен, если ты вставляешь назад в textarea.

Serg_pnz 23.08.2011 16:38

Так если не делать этого, то отдается с переводом строк в консоль и не вставляется!

Вот сабж, только я рецепт никак не догоню.. http://forum.vingrad.ru/forum/topic-326152.html

ваый 23.08.2011 17:09

Чисти строку, как тебе надо, просто не вырезай переносы строк и все будет ок. Например:
<textarea id="txt" style="width: 500px; height: 110px;">This is some dirty appempt to make a 
script
injection <script>alert('hello')</script>
boom!
(note new lines)
</textarea>
<br>
<button onclick="clean()">Test</button>

<script>
function clean() {
    var el = document.getElementById('txt');
    var text = el.value;
    el.value = stripTags(text);
}

function stripTags(str) {
    return str.replace(/<\w+(\s+("[^"]*"|'[^']*'|[^>])+)?>|<\/\w+>/gi, '');
}
</script>

Serg_pnz 24.08.2011 10:23

уфффф... разобрался

//$tmp[0][0] - это после обрезки, в общем исходный текст с переносами
$txt = nl2br($tmp[0][0]); //для вставки в тело письма
$txt2 = urlencode($tmp[0][0]); //кодируем 
$mess .= '$(\'#ftxt\').val(decodeURIComponent(\''.$txt2.'\'));';  //вывод с декодированием (сам вывод чуть ниже)


Пример работы http://kro002.jcase.ru/index-5.html
введите в textarea больше 20 символов, не заполняя другие поля нажмите "Отправить".

ваый 24.08.2011 11:40

Цитата:

Сообщение от Serg_pnz
уфффф... разобрался

:lol: ну и с чем ты разобрался? Ввожу "test test", нажимаю Отправить, => выскакивает попап, все ок, но в textarea получается "test+test". Это не круто.
Что-то ты мутишь не то. Валидация не так делается. Нельзя изменять программно то, что ввел пользователь. Если данные некорректны - ты должен сообщить, в чем именно ошибка, и предоставить пользователю возможность самому ее исправить, а не вырезать там что-то, изменять за него. Это не дружелюбно по отношению к пользователю.

Serg_pnz 24.08.2011 14:50

Про пробелы согласен, а про дружелюбность... Обойдется пользователь и 1000 знаками в тексте сообщения, мне сочинение на вольную тему на мыло не нужно.

ваый 24.08.2011 15:18

Цитата:

Сообщение от Serg_pnz
Обойдется пользователь и 1000 знаками в тексте сообщения, мне сочинение на вольную тему на мыло не нужно.

Ну это понятно, что надо ограничивать. Я имею ввиду, что нужно просто не позволять вводить больше символов, чем разрешено. Или хороший пример twitter - позволяет вводить сколько угодно, но счетчик становиться красного цвета, а число разрешенных символов - отрицательным, -43 например. Но вводить пользователь все равно может. Пожалуйста. Он просто знает, что лишнее будет обрезано. То есть я о том, что не надо за пользователя вносить изменения с его текст.
Также не надо путать sanitation и validation. Тебе нужно сделать валидацию данных, а не санацию. Санация делается непосредственно перед вставкой в базу и пользователю уже назад не отдается.

Serg_pnz 24.08.2011 17:44

Ок, убедил)) Но в других полях санацию всё же оставлю (типа русские символы в поле мыла)

x-yuri 24.08.2011 20:31

для передачи информации из php в js есть json_encode. Хотя он тут не нужен. Как не нужно отправление данных на сервер, возвращение скриптов в ajax-запросах и вырезание допустимых (русских) символов из email-адресов (это не санация, это кастрация какая-то ;)).


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