2011-11-30 95 views
1

我見過很多關於在textarea輸入中保留換行符的問題,但我需要相反的。我懷疑我的問題的答案不會是一個好的,但...javascript:在輸入字符串上剝離換行符

我正在使用預格式化的電子卡(在Convio,如果這有助於任何人)。我可以添加任何我想要的文本和HTML,但從窗體進入的數據是通過Convio標記進行的,無法更改。

這就是我在說的。 textarea的輸入是:

Hello, 

How are you? 

這將進入電子卡:

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

換句話說,它插入分隔符標籤,之後卻也使在實際的換行符每個標籤。沒問題,對吧?這將正常顯示,因爲電子郵件閱讀器會忽略HTML實際換行符,但不幸的是附加信息被前置到textarea的輸入,所以他看起來到電子賀卡是真的:

A message from Mr. John Smith [email protected]<br /> 

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

的名稱和電子郵件地址來自表格中的其他字段。當然,這顯示爲:

A message from Mr. John Smith [email protected]  
Hello, 

How are you? 

這是問題:我討厭第一行。我的意思是我真的很討厭它。信息已經在其他地方的電子賀卡上,我不想在那裏。這太不友好了,它在電子卡片上看起來並不吸引人,它幾乎總是包裝到第二行(這看起來更糟糕,尤其是沒有和textarea的第一行之間沒有空格),這隻會讓我想哭。

如果一切都以字符串的形式出現,而沒有實際的換行符,那我就沒有問題了,爲了刪除第一行而對文本進行切片和切塊。我可以編輯輸入表單以刪除textarea輸入中的實際中斷,但是「來自...的消息」消息後面的這兩個換行符正在殺死我。我無法弄清楚如何使輸入字符串適合javascript。

我只限於javascript - 是的,我知道這在PHP中很簡單,但我沒有這個選項 - 而且我的網站管理員和我幾乎得出結論,我們可以'不要做我想做的事情。儘管如此,我還是要仔細檢查,並且我很樂意有人來證明我錯了。

回答

1

抓住哪個元素具有該消息的innerHTML,並將第一行的子串排出。

http://jsfiddle.net/Q8gu8/4/

+0

我去了那個小提琴,它沒有奏效。 – hafichuk

+0

好吧,我也遇到了同樣的問題,正如我對hafichuk的迴應所做的那樣,但它給了我一個很好的起點。 IE沒有看到換行符,並且它將斷開標籤更改爲舊形式(即'
')。謝謝您的幫助!這是我第一次嘗試javascript。 http://jsfiddle.net/Q8gu8/9/ – Dascalargo

+0

那麼,它在測試環境中工作。當我把它放在模板中時,它會被完全搞砸。我放棄。感謝您的幫助,夥計們。我希望我能夠提高你的能力,但是我自己的聲望還不夠高。 – Dascalargo

0

您應該能夠使用正則表達式與replace()

看到這個fiddle

HTML:

<div class="replace"> 
    A message from Mr. John Smith [email protected]<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的選擇。

+0

這似乎不適合我。 –

+0

已更新,未貼上正確的網址。 – hafichuk

+0

嗯...我沒有得到任何輸出的小提琴。 – Dascalargo

1

您可以使用"\n"(或\r作爲回車)匹配換行符。所以,如果我有以下字符串:

Foo 
is 
An 
Apple 

我可以刪除的第一行,像這樣:

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

...這意味着我留下了:

is 
An 
Apple 

/^.+?\n/是一個正則表達式,意思是:匹配所有內容,包括第一個換行符。