我写了一个函数如下:
function makeTitleEditable($titleContainer){
var defaultValue = $titleContainer.text().replace("'","\\'");
$titleContainer.replaceWith("<input id='poll_title' name='poll[title]' value='" + defaultValue +"' type='text'>");
}
现在的问题是,我仍然无法摆脱单引号。例如,如果
$titleContainer.text() => I'm lucky
console.log("<input id='poll_title' name='poll[title]' value='" + defaultValue +"' type='text'>") => <input id='poll_title' name='poll[title]' value='I\'m lucky!' type='text'>
这将生成值为"I“而不是”我很幸运“的DOM。我该如何解决这个问题?
发布于 2012-11-26 04:19:58
使用jQuery设置该值;
function makeTitleEditable($titleContainer){
$titleContainer.replaceWith(
$("<input id='poll_title' name='poll[title]' type='text'>").val($titleContainer.text())
);
}
发布于 2016-04-06 03:58:05
当然,快速的解决方法很简单,就是用"\'"
替换"'"
,尽管在复制和粘贴类型的基础上这确实是不可伸缩的。
最好是通过正则表达式,例如:
var badString = "Visit John's Site!!!";
var goodString = badString.replace(/'/g, "\'");
但请记住,它们会在服务器端甚至在后续的函数调用中再次显示为简单的撇号,所以如果您计划在不同的函数之间传递它们,另一种解决方案可能更可取:
var badString = "Visit John's Site!!!";
var goodString = badString.replace(/'/g, "\x27");
这是撇号的标准Unicode字符。这不一定会避免任何后续的函数调用出现问题,但这意味着字符串将不需要解码。
https://stackoverflow.com/questions/13555056
复制相似问题