我需要将可能包含特殊字符的字符串传递给Javascript函数,如下所示。
function setEditMode(countryName, countryCode)
{
document.getElementById("txtCountryName").value=countryName;
document.getElementById("txtCountryCode").value=countryCode;
}
<input id="txtCountryName" name="txtCountryName" type="text" maxlength="50"/><br/>
<input id="txtCountryCode" name="txtCountryCode" type="text" maxlength="2"/><br/>
<input type="button" value="Submit" id="btnEdit" name="btnEdit" onclick="setEditMode(''xx' "yy" # $', '"'');" />
单击该按钮时,需要将包含特殊字符的两个类型字符串参数提供给setEditMode()
Javascript函数。字符串需要转义。我尝试使用escape()
函数,但它不起作用。有没有办法将这些参数传递给函数? (我正在处理JSP)。
[setEditMode()
函数的那些参数对应'xx' "yy" # $
和"'
分别]。
答案 0 :(得分:2)
您在示例中显示的参数包含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处理程序中呈现数据相同的方式渲染它们。