2015-07-21 45 views
1

我有一個接受換行符的文本區域。該文本區域的內容保存在coldfusion變量中(我們稱之爲#fieldVal#)。所以,我的變量內容看起來像在JavaScript中使用帶有換行符的ColdFusion變量

textline 1 
textline 2 

後來,我使用該變量在JavaScript

document.all.fieldName.value = "#fieldVal#"; 

然而,JavaScript的點擊頁面時,它看起來像這樣:

document.all.fieldName.value = "textline 1 
textline 2"; 

並且腳本因爲第一行不以分號結尾而中斷。

我嘗試設置一個JavaScript變量到ColdFusion文本,然後做一個replace(),但我仍然遇到同樣的問題,線路沒有正確結束。

我想我錯過了一些明顯的東西,但我只是沒有看到它。有人能告訴我我在這裏錯過了什麼嗎?

+0

它提到的具體錯誤是什麼? – depperm

+0

SCRIPT1015:未終止的字符串常量 –

+0

您是否嘗試過或toScript()? –

回答

13

使用JSStringFormat()函數。它的目的是逃避元字符在JavaScript

逃逸特殊JavaScript的字符,如單引號, 雙引號,和換行符。

https://wikidocs.adobe.com/wiki/display/coldfusionen/JSStringFormat

document.all.fieldName.value = "#JSStringFormat(fieldVal)#"; 

如果你使用的ColdFusion 10+或Lucee服務器,使用EncodeForJavaScript()

https://wikidocs.adobe.com/wiki/display/coldfusionen/EncodeForJavaScript

+0

修好了!謝謝。 –

1

選項1

document.all.fieldName.value = "#Replace(trim(fieldVal), chr(10) & chr(13), ' ', 'ALL')#"; 

選項2(可能的是,同樣的問題發生在這一點。)

嘗試使用ToScript()

ToScript(fieldVal, valueVar) 

Toscript初始化與可變coldfusion變量的值,你可以像任何JS全局變量一樣使用。

document.all.fieldName.value = valueVar; 

選項3(如果您在HTML表單需要)

使用的ColdFusion功能ParagraphFormat()從而改變線闖入<br/>

+1

選項1和3不處理字符串中可能存在的其他特殊字符。 –

+0

@BradWood是的,我會盡力改善它。 :) – RRK

-1

我偶然發現了一個有效的代碼片段。它有點...令人費解,但它的工作原理。

document.all.fieldName.value = "#Replace(Replace(URLDecode(Replace(Replace(URLEncodedFormat(fieldVal), "%0D", " ", "ALL"), "%0A", "", "ALL")),CHR(34),"", "ALL"),CHR(39),"", "ALL")#" 
+4

這是一個混亂,完全沒有必要。 CFML有一個函數,我在我的答案中提到了乾淨地處理這個問題。 JSStringFormat()。 –

+0

是的,我在系統的其他地方發現了這個片段。我可能會在今天晚些時候用你的答案中的函數來替換它。 –

相關問題