您在示例中显示的参数包含 html 实体。你想解码它们吗?Javascript 中没有本地方法可以做到这一点,但您可以使用以下代码片段(需要 jQuery):
$("<div>").html(""").html();
在你的情况下:
var countryName = $("<div>").html(countryName).html();
var countryCode = $("<div>").html(countryCode).html();
或使用通用函数:
function decodeHtmlEntities(value)
{
return $("<div>").html(value).html();
}
和
function setEditMode(countryName, countryCode)
{
document.getElementById("txtCountryName").value=decodeHtmlEntities(countryName);
document.getElementById("txtCountryCode").value=decodeHtmlEntities(countryCode);
}
或者使用这个函数:http ://phpjs.org/functions/html_entity_decode:424
如果你不想用 jQuery 创建 div 标签。
编辑:根据您的评论。似乎是内联脚本中的实体的"
问题'
。您可以通过调用这样的方法来解决它:
<input type="button" value="Submit" id="btnEdit" name="btnEdit" onclick="setEditModeWrapper()" />
<script type="text/javascript">
function setEditModeWrapper()
{
setEditMode(''xx' "yy" # $', '"'');
}
</script>
如果您希望在输入字段中对这些 ' 进行解码,请将此解决方案与上述解码功能结合使用。
或者更优雅:
<input type="button" value="Submit" class="submitBtn" id="btnEdit" name="btnEdit" data-countryname="'xx' "yy" # $" data-countrycode=""'" />
<script tyoe="text/javascript">
$(".submitBtn").on("click", function(e)
{
var btn = $(e.currentTarget);
var countryName = btn.attr("data-countryname");
var countryCode = btn.attr("data-countrycode");
setEditMode(countryName, countryCode);
});
</script>
将脚本标签放在页面底部,它将根据其 data-countryname 和 data-countrycode 属性处理所有提交按钮。以与在 onclick 处理程序中呈现数据相同的方式呈现它们。