ColdFusion/Javascript转义单引号

ColdFusion/Javascript Escape Single Quote

本文关键字:单引号 转义 Javascript ColdFusion      更新时间:2023-09-26

我知道这将是一件简单的事情,我只是不知何故错过了它,但它来了:

我有一个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
    }
}

谢谢。

内置的jsStringFormat将为JavaScript 进行转义

var stored_feedback = "#jsStringFormat(StoredFeedback)#";

我不知道ColdFusion,但根据文档:

var stored_feedback = #SerializeJSON( trim(StoredFeedback) )#; 

认为不应该显式添加引号,因为字符串在序列化为JSON时无论如何都应该以双引号结束。再说一遍,我自己无法测试。

如果您正在寻找ColdFusion解决方案,您可能需要使用以下内容:

HTMLEditFormat(string)

HTML转义字符串。返回字符被删除;换行符被保留。HTML中具有特殊含义的字符被转换为HTML字符实体,例如>。