在 JavaScript 中正确转义输入值中的字符

Properly escape characters in input value in JavaScript

我的目标是在输入中显示 Sarah O'Connor 作为值。我需要转义 Sarah O' Connor 以显示正确的 UTF-8 html 字符。

我看到一些建议替换每个特殊字符的答案。但这肯定不是正确的方法,因为世界各地的人名中可能有数百个字符。

我也尝试过 javascripts escape() / unescape()encodeURI() / decodeURI() 函数,但它们只能作为 html 文本而不是输入值。

请在此处查看 jsFiddle: http://jsfiddle.net/gHHzA/

var div = $("#my-div");
var input = $("input");
var str = "Sarah O'Connor";

div.html(str);   //--> Sarah O'Connor
input.val(str);  //--> Sarah O'Connor

您可以创建一个元素来放置HTML,然后您可以得到.text()的格式化结果,例如:

input.val($("<div>", {html:"Sarah O&#39;Connor"}).text())