向javascript函数提供可能包含特殊字符的字符串参数
我需要将可能包含特殊字符的字符串传递给Javascript函数,如下所示向javascript函数提供可能包含特殊字符的字符串参数,javascript,escaping,Javascript,Escaping,我需要将可能包含特殊字符的字符串传递给Javascript函数,如下所示 function setEditMode(countryName, countryCode) { document.getElementById("txtCountryName").value=countryName; document.getElementById("txtCountryCode").value=countryCode; } <input id="txtCountr
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(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(''xx' "yy" # $', '"'');
}
</script>
函数setEditModeWrapper()
{
setEditMode(“';xx';";yy";#$”、“";';”);
}
如果您希望在输入字段中解码这些函数,请将此解决方案与上面的解码函数相结合
或者更优雅:
<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>
美元(“.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(''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>