[英]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.