javascript: удаление разрывов строк во входной строке - PullRequest
1 голос
/ 01 декабря 2011

Я видел много вопросов о сохранении разрывов строк во входных данных textarea, но мне нужно обратное.Я подозреваю, что ответ на мой вопрос не будет хорошим, но ...

Я работаю с предварительно отформатированной электронной картой (в Convio, если это кому-нибудь поможет).Я могу добавить любой текст и HTML, которые я хочу, но данные, поступающие из формы, передаются через теги Convio и не могут быть изменены.

Вот о чем я говорю.Ввод текстовой области:

Hello,

How are you?

Это будет входить в электронную карту как:

Hello,<br />
<br />
How are you?

Другими словами, он вставляет теги разрыва, но он также вставляетфактический разрыв строки после каждого тега.Нет проблем, верно?Это будет отображаться правильно, так как программа чтения электронной почты игнорирует фактические разрывы строк в HTML, но, к сожалению, перед вводом textarea добавляется дополнительная информация, поэтому на электронную карту в действительности выводится:

A message from Mr. John Smith johnsmith@xxx.com.<br />

Hello,<br />
<br />
How are you?
* 1013имя и адрес электронной почты из других полей формы.Это, конечно, отображается как:
A message from Mr. John Smith johnsmith@xxx.com.    
Hello,

How are you?

Вот проблема: я ненавижу эту первую строку.Я имею в виду, я действительно ненавижу это.Информация уже есть на электронной карте в другом месте, и я не хочу ее там.Это слишком недружелюбно, это визуально непривлекательно на электронной карте, оно почти всегда переносится на вторую строку (что выглядит еще хуже, особенно без пробела между этим и первой строкой из текстовой области), и это просто заставляет меня плакать.

Если бы все вошло в виде строки без фактических разрывов строк, у меня не было бы проблем с разрезанием и нарезкой текста для удаления первой строки.Я мог бы отредактировать форму ввода, чтобы убрать фактические разрывы в текстовой области ввода, но эти два разрывы строки после сообщения «Сообщение от ...» убивают меня.Я не могу понять, как сделать входную строку приемлемой для javascript.

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

Ответы [ 3 ]

1 голос
/ 01 декабря 2011

Вы можете сопоставить разрыв строки, используя "\n" (или \r для возврата каретки).Итак, если у меня есть следующая строка:

Foo
is
An
Apple

Я могу удалить первую строку следующим образом:

// assume the string is stored in variable `str`
str = str.replace(/^.+?\n/, '');

... что означает, что у меня осталось:

is
An
Apple

/^.+?\n/ - это регулярное выражение, которое означает: сопоставить все, вплоть до первого переноса строки.

1 голос
/ 01 декабря 2011

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

0 голосов
/ 01 декабря 2011

Вы можете использовать регулярное выражение с replace()

Смотрите это скрипка .

HTML:

<div class="replace">
    A message from Mr. John Smith johnsmith@xxx.com.<br />

Hello,<br />
<br />
How are you?
<div>

JS:

var haystack = $('.replace').html();

var regex = /A message.*/;
$('.replace').html(haystack.replace(regex, ""));

Выход:

Hello,

How are you?

Обратите внимание, что для выбора используется JQuery.

...