在填充表单输入之前使用JavaScript转义字符串

在填充表单输入之前使用JavaScript转义字符串,javascript,escaping,quotes,Javascript,Escaping,Quotes,我有一段代码,我获取一个属性值并将其加载到一个表单中,标题行可以如下所示: 欢迎来到美国最有价值的酒店 但是当使用这个转义函数时,字符串在撇号处被截断 var headline = escape($(this).attr("data-headline")); //populate the textbox $(e.currentTarget).find('input[name="headline"]').val(headline); 我也尝试过使用这里的解决方案:没有运气 如何填充输入并保留撇

我有一段代码,我获取一个属性值并将其加载到一个表单中,标题行可以如下所示:

欢迎来到美国最有价值的酒店

但是当使用这个转义函数时,字符串在撇号处被截断

var headline = escape($(this).attr("data-headline"));

//populate the textbox
$(e.currentTarget).find('input[name="headline"]').val(headline);
我也尝试过使用这里的解决方案:没有运气

如何填充输入并保留撇号/引号

只要使用

$(this).find('input[name="headline"]').val(this.dataset.headline);
不需要任何逃跑

但是,请注意,
escape
并没有删除撇号,而是将它们替换为
%27
。如果当前代码不能在标题中使用撇号,请确保包含
数据标题
属性的标记被创建它的任何工具正确转义

var headline = $(this).attr("data-headline").replace(/'/g, '%27');
//populate the textbox
$(e.currentTarget).find('input[name="headline"]').val(unescape(headline));

如果浏览器兼容性很重要,则数据集仅在IE11+

上可用,您可以使用
$('input[name=“headline”]”,e.currentTarget)
选择vs选择并查找。为什么需要在javascript中转义它?仅设置值不应引起任何问题。在此处调用
escape
有什么意义?a) 你认为它能做什么b)没有必要转义进入
.val()
的字符串
escape
似乎已被弃用,主要用于
uri
而不是转义撇号
escape
已被弃用很久,不应用于您试图实现的目标。我确信jQuery还有另一个可以使用的函数。为什么我的字符串在填充到.val()时会在撇号处被截断@Bergi您知道
unescape()
已被弃用,对吗?新版本的浏览器可能会完全降低其兼容性。感谢您的建议,您正确地转义了该属性。使用PHP,这对我来说很有用:+