Не работает символ переноса строки — JavaScript — Киберфорум

Введение

Наборы символов

При написании JavaScript-скриптов используются Unicode-символы. Это означает, что при помощи этой кодировки можно отобразить любые символы. Посмотреть символы можно на сайте http://unicode.org

Регистрозависимость

JavaScript — регистрозависимый язык программирования. Написание букв и слов в верхнем регистре (например, «FOO») и нижнем (например, «foo») имеет отличие.

Переносы строк и символы-разделители

В языке игнорируются переводы строк, пробелы и символы табуляции (клавиша «Tab»). Эти символы можно использовать в любом месте JavaScript-скрипта

Точка с запятой «;»

Символ точки с запятой используется для разделения простых инструкций языка. Этот символ необязательный, если инструкции находятся в разных строках. Обязательный, если инструкции находятся в одной строке.

Пример фрагмента кода с точкой запятой

Пример фрагмента кода без точек с запятой

Пример фрагмента кода с точками с запятой в строке

Во многих языках программирования существуют комментарии. В JavaScript есть однострочный комментарий // (действует до конца строки) и многострочный комментарий между /* и */

Пример кода с комментариями

Идентификаторы

Идентификаторы — названия переменных и функций. Идентификаторы JavaScript могут начинаться со знака доллара «$», символа подчёркивания «_», символов алфавита. Цифры могут присутствовать внутри идентификатора.

Пример кода с возможными идентификаторами

Пример кода с неправильными идентификаторами

Зарезервированные слова

Существует список зарегистрированных слов, которые нельзя использовать для названий переменных и функций.

Зарезервированные слова

Нерекомендованные для использования в качестве идентификатора

Другие нерекомендованные

Достаточно редко, но иногда хочется, в Яваскрипте, записать переменную-строку многострочно.

Как объявить многострочную переменную-строку

Если попытаться объявить переменную-строку с переносом строк, то возникнет ошибка: .

Чтобы правильно объявить многострочную переменную-строку нужно использовать символ обратного слэша «\» (или обратной косой черты, как удобнее).

Пример

В конце каждого переноса строки добавляем символ «\».

// Объявление многострочной переменной-строки var multistring = "Эта\ строка\ \ является\ \ многострочной";

Заключение

Многострочное объявление строк используют только для удобства, возврата каретки не происходит, для этого нужно перед символом обратного слэша (\) нужно добавлять .

Например

// Объявление многострочной переменной-строки var multistring = "Эта\r\n\ строка\r\n\ \r\n\ является\r\n\ \r\n\ многострочной";

Форум об интернет-маркетинге > Сайтостроение > Веб-строительство > Перенос строки в письме js


PDA

Просмотр полной версии : Перенос строки в письме js


Здравствуйте.

Подскажите как реализовать перенос строки в письме, когда отправляю форму?
В самой форме перед отправкой перенос есть.
А в письме все в одну строчку приходит.

https://jsfiddle.net/Zumzum/bvqw1kwo/


webiumpro

24.03.2017, 14:45

Если честно, по ссылке не очень ясна суть проблемы, поскольку не видно, какие данные вы получаете после отправки формы


Проблема в том, что в письме все в одну строку приходит:

У Пети было 5 красных мячиков У Вани было 8 синих мячиков

Нужно что бы был перенос строки в письме:

У Пети было 5 красных мячиков
У Вани было 8 синих мячиков

Не понимаю как иначе объяснить.


webiumpro

24.03.2017, 14:58

В итоге вы с этими данными что делаете? Выводите куда-то? На почту отправляете?

Нужно что бы был перенос строки в письме:
Имеете в виду письмо, которое приходит на email?


Sitealert

24.03.2017, 14:59

Есть 2 путя.
1. Сразу вставлять <br/>, а не \n.
2. Обрабатывать на сервере функцией nl2br().


Выводите куда-то? На почту отправляете?

Это поле формы. Кликаю по кнопке отправить и оно летит на почту.

———- Добавлено 24.03.2017 в 14:02 ———-

<br/> не работает. В письме так и приходит:

У Пети было 5 красных мячиков<br/> У Вани было 8 синих мячиков


var newTextariaSend = oldTextariaSend.replace(/\r?\n/g, ‘<br>’);


seo11, не соображу как сюда пристроить перенос после определенного слова в тексте?

var newTextariaSend = oldTextariaSend.replace(/\r?\n/g, ‘<br>’);


Sitealert

24.03.2017, 15:14

Так это то же самое, если <br> не работает.
Непонятно, как там у Вас происходит обработка текста на сервере.
Может быть, тогда вместо \n\n попробовать \r\n ?


ziliboba0213

24.03.2017, 15:16

seo11, не соображу как сюда пристроить перенос после определенного слова в тексте?

var newTextariaSend = oldTextariaSend.replace(/\r?\n/g, ‘<br>’);
Если есть в форме перенос, то он заменяется на <br>, а вам то что надо? 🙂 Похоже, ТехЗадания это не ваше :crazy:


Sitealert, но я делал так:

var newTextariaSend = oldTextariaSend.replace(new RegExp(‘мячиков’, ‘g’),"мячиков\n <br/>");

В письме на почте <br/> выводится как обычный текст.


webiumpro

24.03.2017, 15:26

Если в письме выводится неправильно, то вероятно проблема не в js, а в способе, которым вы отсылаете письмо. Вы пытаетесь отправить письмо текстом, а нужно html


Если форму заполнять в ручную, делать переносы строк через шифт+ентер, то на почту все равно приходит все в одну строку.


tommy-gung

24.03.2017, 16:50

content-type: text\plain


Sitealert

24.03.2017, 17:40

AlexGr4, так прошлись бы по цепочке, и посмотрели, на каком этапе у Вас перенос строки вырезается. Гадать можно очень долго, по принципу угадал-не угадал.


Дикий пионер

24.03.2017, 18:10

Как говорится, show me the code.
Функции отправки почты.


Дикий пионер, вот сама форма. Именно она отправляет письма без переноса строк.
https://goo.gl/mSzAiP

———- Добавлено 24.03.2017 в 17:29 ———-

Вот что пришло на почту
http://clip2net.com/s/3IOTgxM


Sitealert

24.03.2017, 18:45

Вот что пришло на почту :bl: Это я отправлял. Вырезает какой-то скрипт из тех, что у Вас там наворочены. Типа валидация, наверное. Из браузера уже уходит в таком виде.


Вот что пришло на почту
Откройте письмо в браузере и покажите код (по Ctrl-U).


Sitealert

24.03.2017, 19:55

Отправил письмо с отключенным жабаскриптом. Должно прийти в несколько строк. По крайней мере, из браузера ушло нормально.


Sitealert, пришло вот так http://clip2net.com/s/3IPiiF8

———- Добавлено 24.03.2017 в 21:14 ———-

Содержимого письма в исходном коде не видно.
На почте. Яндекс.

———- Добавлено 24.03.2017 в 21:16 ———-

Ищу http://clip2net.com/s/3IPiU5v и его там нет http://clip2net.com/s/3IPiS52


Sitealert

24.03.2017, 23:25

Ну это у Вас там глюк на глюке и глюком погоняет. Во-первых, на странице с формой javascript вырезает переносы строк, а во-вторых, если их всё-таки отправить, то в итоговом сообщении они выглядят как пробелы. То ли на сервере замена идёт, то ли отправка идёт в виде html-страницы.


Содержимого письма в исходном коде не видно.
Должно быть, иначе — что же прислали? Пошлите письмо подлиннее, легче будет найти.
Ида, интересует одно — как выглядят символы переноса в коде?


Sitealert

24.03.2017, 23:39

AlexGr4, содержимое письма может выглядеть как-то так:\u0438\u0431\u043E


Смог увидеть содержимое письма в исходном коде только при выборе "ле
гкой" версии яндекс почты. В полной версии в исходном коде письма не видно.

http://clip2net.com/s/3IPvvWy

http://clip2net.com/s/3IPvBgO

———- Добавлено 24.03.2017 в 23:55 ———-

И опять таки нет никакого тега который был бы виден заместо переноса строки в исходном коде.


Sitealert

25.03.2017, 01:30

AlexGr4, так вроде понятно:content-type: text\plainРасшифровываю, если непонятно:$send = mail($address,$sub,$mes,"Content-type:text/plain; charset = UTF-8\r\nFrom: noreply@site.ru");


Расшифровываю, если непонятно:
+1
либо Content-type:text/html;, тогда переносы оформляйте <br> -ами.


Дело в том, что я не могу вмешаться в работу данной формы, в ее код.

Могу только дописать свой, не могу изменить существующий.
Так уж устроена эта форма. Это стандартная форма программы Adobe Muse.


не могу изменить существующий
Что мешает это сделать в законченном творении?


Не все так просто на самом деле. Можно конечно внести свои какие-то правки в код формы. Но дело немного в другом. Я хотел сделать некий фикс которые подключался бы удаленно, через js, без надобности редактирования самого кода формы. Хотел сделать так называемый виджет для стандартной формы Muse. Но, когда человек работая в этой программе ставит себе на сайт форму, она устанавливается так как вы могли видеть выше, со всеми своими патрахами.

Javascript перенос строки в textContent

Что бы изменить исходный код страницы, надо открывать эту страницу в редакторе, что-то там менять, затем в ручную выгружать на хостинг. Это не удобно для пользователей Muse, потому что сайт сделанный в этой программе выгружается на хостинг через саму программу. Фишка еще в том, что пользуясь этой программой не нужно лазить в код страницы, программа его генерирует автоматически.

Если я сейчас внесу изменения в код формы, то потом, при следующей выгрузке страницы на хостинг, код, который я менял, слетит до первоначального вида. Тут поможет только внешнее подключение js, ну или php. Иными словами, надо сделать виджет который бы и выполнял поставленную задачу, не вмешиваясь в сам код формы.


Хотел сделать так называемый виджет для стандартной формы Muse.
Мож, у создателей виджетов Мюзе свой форум есть? На крайняк, на английском стековерфлоу поспрашивать?


Есть форум и не один. Но дело то не в этом. Потому что там сидят теже прогеры 🙂 Задача предельно понятна — сделать перенос строк, не вмешиваясь в код формы. То есть каким-то отдельным скриптом. А сами скрипты, файлы js, php, css и так далее, они все подключаются там без проблем. Если это сделать не реально, да и фиг с ним. Но конечно хотелось бы, а то парой читаешь письма отправленные через данную форму, и там все в одну строку, каша одним словом 🙂

———- Добавлено 25.03.2017 в 13:00 ———-

http://clip2net.com/s/3IPX2y3

———- Добавлено 25.03.2017 в 13:02 ———-

http://clip2net.com/s/3IPX8eO


tommy-gung

25.03.2017, 15:09

Это стандартная форма программы Adobe Muse.
там генерируются файлы отправки, их и правь


Sitealert

25.03.2017, 15:28

AlexGr4, при отправке с браузера ушли нормальные теги <br/>. А в почте они видны как &lt;br/&gt;
То есть на сервере программа обработки данных преобразует html-теги в эти сущности, поэтому перенос строки через <br/> не срабатывает, хотя письмо и отправляется как text/html.
В общем всё ясно, неясно только как Вашу проблему решить, если серверные скрипты править нельзя. Правка клиентской части здесь никак не поможет.


vBulletin® v3.8.6, Copyright ©2000-2018, Jelsoft Enterprises Ltd. Перевод: zCarot

Специальные символы (JavaScript)

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

Допустим, нужно в многострочном тексте заменить  на тэг подчеркивания: . Такой код не работает:

function bbtagit(text) { text = text.replace(/[u](.*?)[/u]/gim, ‘<u>$1</u>’) return text } var line = «[u]мойn текст[/u]» alert( bbtagit(line) )

В javascript в многострочном режиме (его включает флаг m) изменяется значение только символов ^ и $ (они обозначают начало и конец строки, а не всего текста). Точка обозначает любой символ кроме символа новой строки. Чтобы обозначить любой символ, включая  символ новой строки, следует использовать выражение [sS]:

function bbtagit(text) { text = text.replace(/[u]([sS]*)[/u]/gim, ‘<u>$1</u>’) return text } var line = «[u]мойn текст[/u]» alert( bbtagit(line) )

(источник http://javascript.ru/tutorial/regexp-specials)

Запись опубликована в рубрике JavaScript с метками регулярные выражения.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *