向javascript函数提供可能包含特殊字符的字符串参数

向javascript函数提供可能包含特殊字符的字符串参数,javascript,escaping,Javascript,Escaping,我需要将可能包含特殊字符的字符串传递给Javascript函数,如下所示 function setEditMode(countryName, countryCode) { document.getElementById("txtCountryName").value=countryName; document.getElementById("txtCountryCode").value=countryCode; } <input id="txtCountr

我需要将可能包含特殊字符的字符串传递给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('&#039;xx&#039; &#034;yy&#034; # $', '&#034;&#039;');" />
函数setEditMode(countryName,countryCode)
{
document.getElementById(“txtCountryName”).value=countryName;
document.getElementById(“txtCountryCode”).value=countryCode;
}


单击按钮时,需要向
setEditMode()
Javascript函数提供包含特殊字符的字符串类型的两个参数。字符串需要转义。我尝试过使用
escape()
函数,但没有成功。有没有办法将这些参数传递给函数?(我正在处理JSP)

[那些
setEditMode()
函数的参数对应于
'xx'“yy”$

分别]。

示例中显示的参数包含html实体。是否尝试对其进行解码?Javascript中没有本机方法可以进行解码,但可以使用以下代码段(需要jQuery):

或使用此功能: 如果您不想用jQuery创建div标记

编辑:根据您的评论。内联脚本中的
的实体似乎有问题。您可以通过调用如下方法来解决此问题:

<input type="button" value="Submit" id="btnEdit" name="btnEdit" onclick="setEditModeWrapper()" />
<script type="text/javascript">
    function setEditModeWrapper()
    {
        setEditMode('&#039;xx&#039; &#034;yy&#034; # $', '&#034;&#039;');
    }
</script>   

函数setEditModeWrapper()
{
setEditMode(“';xx';";yy";#$”、“";';”);
}
如果您希望在输入字段中解码这些函数,请将此解决方案与上面的解码函数相结合

或者更优雅:

<input type="button" value="Submit" class="submitBtn" id="btnEdit" name="btnEdit" data-countryname="&#039;xx&#039; &#034;yy&#034; # $" data-countrycode="&#034;&#039;" />

<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>

美元(“.submitBtn”)。在(“单击”,函数(e)
{
var btn=$(e.currentTarget);
var countryName=btn.attr(“数据countryName”);
var countryCode=btn.attr(“数据countryCode”);
setEditMode(国家名称、国家代码);
});

将脚本标记放在页面底部,它将根据数据countryname和数据countrycode属性处理所有提交按钮。以与在onclick处理程序中呈现数据相同的方式呈现它们。

未调用
setEditMode()
function本身,因为其参数
setEditMode(“';xx';";yy";#$”、“";';”)中有特殊字符。我如何调用它?Internet Explorer显示的是
Expected')
。您如何将参数传递到
setEditMode(“…”、“…”)
?你能给我看看吗?试试我在编辑中添加的代码。内联脚本中的“和”的实体似乎有问题。如果将其移动到上述函数中,它将起作用。不过要详细一点。这些值(setEditMode()
的参数)是从数据库中到达的。因此,我需要在单击按钮后立即传递它们。[即,参数是在运行时确定的]。这应该没有问题。只需在setEditModeWrapper()中而不是在中呈现参数。呈现数据库中的值的代码看起来如何?
function decodeHtmlEntities(value)
{
   return $("<div>").html(value).html();
}
function setEditMode(countryName, countryCode)
{
    document.getElementById("txtCountryName").value=decodeHtmlEntities(countryName);
    document.getElementById("txtCountryCode").value=decodeHtmlEntities(countryCode);        
}
<input type="button" value="Submit" id="btnEdit" name="btnEdit" onclick="setEditModeWrapper()" />
<script type="text/javascript">
    function setEditModeWrapper()
    {
        setEditMode('&#039;xx&#039; &#034;yy&#034; # $', '&#034;&#039;');
    }
</script>   
<input type="button" value="Submit" class="submitBtn" id="btnEdit" name="btnEdit" data-countryname="&#039;xx&#039; &#034;yy&#034; # $" data-countrycode="&#034;&#039;" />

<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>