ColdFusion-如何将单引号输出到文本字段中?

ColdFusion-如何将单引号输出到文本字段中?,coldfusion,coldfusion-9,Coldfusion,Coldfusion 9,我正在使用ColdFusion 9 我找不到成功地将单个引号输出到文本字段的方法 我使用CFSCRIPT用户定义函数创建表单字段。(为了简单起见,我在本例中最小化了选项。) 当我的输出包含一个单引号时,文本字段会完全混乱,请确保运行示例并查看HTML。我尝试了各种可能的方法使用PreserveSingleQuotes() // USE EITHER STRING MyString = "This string works fine."; MyString = "This single quote

我正在使用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;
}
然后,去掉单引号并替换为转义双引号:

LOCAL.Properties = " value=""#ARGUMENTS.Value#""";
但这样的琴弦仍然会让人窒息:

MyString = "This is my F#@'''""$":""ing  problem!";
因此,添加如下所示的htmlEditFormat()函数:

LOCAL.Properties = " value=""#htmlEditFormat(ARGUMENTS.Value)#""";

谢谢你的帮助

您遇到的问题与值字段的字符分隔符有关。如果使用单引号作为字段分隔符,并且应用程序提供了单引号,则会出现问题。我过去处理这个问题的一种方法是对字段使用双引号。下面显示的行应插入代码:

LOCAL.Properties = " value=""#preserveSingleQuotes(ARGUMENTS.Value)#""";
肖恩·金博尔所展示的方法同样有效。根据情况,我使用了两种方法

还有另一条评论:保留单引号。我不能说我在数据库调用之外使用过这个,但是如果它在这种情况下对您有效,我也学到了一些东西

//创建文本输入
// CREATE TEXT INPUT
function createInputBox(Value) {
    LOCAL.Properties = ' value="' &#preserveSingleQuotes(ARGUMENTS.Value)#& '"';
    LOCAL.Item = '<input size="50" type="text" #LOCAL.Properties# />';
    return LOCAL.Item;
}

// USE EITHER STRING
MyString = "This string works fine.";
MyString = "This single quote's the problem!";
writeOutput(createInputBox(MyString));
函数createInputBox(值){ LOCAL.Properties='value=“”&#保留单引号(ARGUMENTS.value)#&'; 本地。项目=“”; 返回本地项目; } //使用任意一个字符串 MyString=“此字符串工作正常。”; MyString=“这句话就是问题所在!”; writeOutput(createInputBox(MyString));
在HTML中,单引号不应给属性值带来问题,除非: *您没有引用属性值,例如:

<input value=#myvar#>

这里的解决方案是引用您的属性,例如:

<input value="#myvar#">

或 *您正在引用属性,但使用单引号:

<input value='#myVar#'>

最终将是:

<input value='value with a ' in it'>

这种方法在将来对我很有效。好的,你必须用引号来转义引号。疯子但它确实有效。谢谢这个答案的正确性的关键不是使用preserveSingleQuotes()。关键是转义引号和双引号。对不起,我应该删除保留的单引号。。。代码盲板今天必须打开。谢谢你的回答。如果您能解释您的更改,而不仅仅是提供工作代码,我会很有帮助。大多数人通过查看代码并明确指出解释来学习。再次感谢你的帮助!!!nykash,你可以编辑你的答案来更新代码-你应该会看到link和flag之间的edit链接?Adam,如果你删除了preserveSingleQuotes()函数,我的函数就不起作用了。当您转义双引号时,效果很好。但是,在htmlEditFormat()函数与转义引号一起使用之前,它无法完美地工作。啊,如果您不告诉我“不工作”的含义,就不知道“不工作”的含义是什么,因为您会告诉我它做什么而不是工作。相信我:preserveSingleQuotes()在您的代码中根本不起任何作用,因此,如果行为发生了变化,那么这取决于您同时更改的其他内容。事实上:不要相信我。。。自己试试看(一个家庭作业!)把preserveSingleQuotes()弄得一团糟&阅读上面的文档()并熟悉它的工作原理。然后您就可以“下次”了。我的函数在使用或不使用preserveSingleQuotes()时都不能工作,因此与该函数相关的任何参数都是完全无关的。请阅读我上面的答案。您可以从上面运行我的代码。当然,我运行它是为了找出问题所在。我不会浪费您的时间使用无法通过简单的复制/粘贴运行的示例。谢谢你的回答和信息!!!我刚刚注意到你在问题的答案上加了一个扩展。这不是堆栈溢出的工作方式:您应该创建自己的答案,或者编辑最接近的现有答案以生成完整的解决方案,然后将其标记为已接受。我下次会这样做。谢谢
<input value='value with a ' in it'>