簡體   English   中英

在JavaScript中將ColdFusion變量與換行符一起使用

[英]Using ColdFusion variable with line breaks in JavaScript

我有一個接受換行符的文本區域。 該文本區域的內容保存在Coldfusion變量中(我們稱其為#fieldVal# )。 所以,我的可變內容看起來像

textline 1
textline 2

稍后,我在JavaScript中使用該變量

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

但是,當JavaScript命中頁面時,它看起來像這樣:

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

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

我嘗試將JavaScript變量設置為ColdFusion文本,然后執行replace() ,但是由於行未正確結束,我仍然遇到相同的問題。

我認為我缺少明顯的東西,但我只是沒有看到。 有人可以告訴我我在這里想念的嗎?

使用JSStringFormat()函數。 它旨在轉義JavaScript中的元字符

轉義特殊的JavaScript字符,例如單引號,雙引號和換行符。

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

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

如果您使用的是ColdFusion 10+或Lucee Server,請使用EncodeForJavaScript()

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

選項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/>

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM