在JavaScript中使用带有换行符的ColdFusion变量

时间:2015-07-21 18:37:06

标签: javascript coldfusion

我有一个接受换行符的文本区域。该文本区域的内容保存在coldfusion变量中(我们称之为#fieldVal#)。所以,我的变量内容看起来像

textline 1
textline 2

稍后,我在JavaScript中使用该变量

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

但是,当JavaScript点击页面时,它看起来像这样:

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

并且脚本中断,因为第一行不以分号结尾。

我尝试将一个JavaScript变量设置为ColdFusion文本,然后执行replace(),但我仍然遇到了相同的问题,并且该行未正确结束。

我想我错过了一些明显的东西,但我只是没有看到它。有人能告诉我我在这里缺少什么吗?

3 个答案:

答案 0 :(得分:13)

使用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 :(得分: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/>

答案 2 :(得分:-1)

我偶然发现了一个有效的代码片段。它有点......令人费解,但它确实有效。

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