Evi*_*mes 2 coldfusion coldfusion-9
我正在使用 ColdFusion 9。
我找不到将单引号成功输出到文本字段的方法。
我使用 CFSCRIPT 用户定义函数创建表单域。(为了简单起见,我已经最小化了这个例子的选项。)
当我的输出包含单引号时,文本字段会完全搞砸,请务必运行示例并查看 HTML。我已经尝试过使用 PreserveSingleQuotes() 每一种可能的方式。
// USE EITHER STRING
MyString = "This string works fine.";
MyString = "This single quote's the problem!";
writeOutput(createInputBox(MyString));
// CREATE TEXT INPUT
function createInputBox(Value) {
LOCAL.Properties = " value='#preserveSingleQuotes(ARGUMENTS.Value)#'";
LOCAL.Item = "<input size='50' type='text' #LOCAL.Properties# />";
return LOCAL.Item;
}
Run Code Online (Sandbox Code Playgroud)
你知道一个解决方案吗?++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++ 答案
去掉preserveSingleQuotes() 函数,因为它在SQL 块之外什么都不做。(谢谢亚当!)。
LOCAL.Properties = " value='#ARGUMENTS.Value#'";
Run Code Online (Sandbox Code Playgroud)
然后,去掉单引号并用转义双引号替换:
LOCAL.Properties = " value=""#ARGUMENTS.Value#""";
Run Code Online (Sandbox Code Playgroud)
尽管如此,这仍然会在这样的字符串上窒息:
MyString = "This is my F#@'''""$":""ing problem!";
Run Code Online (Sandbox Code Playgroud)
所以,像这样添加 htmlEditFormat() 函数:
LOCAL.Properties = " value=""#htmlEditFormat(ARGUMENTS.Value)#""";
Run Code Online (Sandbox Code Playgroud)
谢谢您的帮助!!!
单引号不应该给 HTML 中的属性值带来问题,除非: * 您没有引用属性值,例如:
<input value=#myvar#>
Run Code Online (Sandbox Code Playgroud)
这里的解决方案是引用您的属性,例如:
<input value="#myvar#">
Run Code Online (Sandbox Code Playgroud)
或 * 您引用的是您的属性,但使用的是单引号:
<input value='#myVar#'>
Run Code Online (Sandbox Code Playgroud)
最终会是:
<input value='value with a ' in it'>
Run Code Online (Sandbox Code Playgroud)
这 - 当然是无效的标记:浏览器将值视为“带 a 的值”,其余部分只是垃圾。
如果您需要这样做: * 切换到使用双引号分隔符 * 在变量值周围使用 htmlEditFormat() (这将转义嵌入的双引号)。
要解决此类问题,请始终查看 HTML 源代码。这将帮助您弄清楚发生了什么。
注意:对于提到preserveSingleQuote() 的每个人:这个函数在CFQUERY 块之外什么都不做。所以它在这里没有帮助。
| 归档时间: |
|
| 查看次数: |
2647 次 |
| 最近记录: |