我知道这将是一件简单的事情,我只是在某种程度上错过了,但在这里它是:
我有一个ColdFusion应用程序,用户可以在多个屏幕上输入文本。我有一个javascript函数,它根据存储在数据库中的内容检查输入的文本,并弹出一个确认窗口,询问他们是否要保存/放弃更改。
如果用户输入的文本包含引号(单引号或双引号),则javascript完全死亡。我需要转义引号,同时保持检查内容是否匹配的能力。
我尝试过escape()和replace()函数(单独和一起),但没有任何工作。
示例javascript:
function change_question(){
var feedback = document.getElementById('feedback').value; //this is what the user has entered on the page
var stored_feedback = "#trim(StoredFeedback)#"; //this is what is stored in the database; retrieved via ColdFusion
if (feedback != stored_feedback) {
if (confirm('You have unsaved data on the page. Do you wish to discard your changes?')) {
//go to next page
}
}
else {
//go to next page
}
}
感谢。
答案 0 :(得分:15)
内置的jsStringFormat将为JavaScript转义
var stored_feedback = "#jsStringFormat(StoredFeedback)#";
答案 1 :(得分:0)
我不知道ColdFusion,但根据文档:
var stored_feedback = #SerializeJSON( trim(StoredFeedback) )#;
我认为你不应该明确地添加引号,因为序列化为JSON时的字符串最终应该以双引号结束。再说一遍,我不能自己测试一下。
答案 2 :(得分:0)
如果您正在寻找ColdFusion解决方案,您可能希望使用它:
HTMLEditFormat(string)
HTML转义字符串字符串。返回字符已删除;换行符保留。 HTML中具有特殊含义的字符将转换为HTML字符实体,例如>。