为javascript函数提供可能包含特殊字符的字符串参数
Supplying string parameters that may contain special characters to a javascript function
我需要将可能包含特殊字符的字符串传递给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" # $
和"'
分别]。
您在示例中显示的参数包含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>
将脚本标记放在页面底部,它将根据其数据国家名称和数据国家代码属性处理所有提交按钮。以与在onclick处理程序中渲染数据相同的方式渲染它们。
相关文章:
- 如何使用JQuery检查输入(电子邮件)字段是否包含特殊字符
- 将字符串值传递到包含特殊字符的 JavaScript 函数中
- 包含特殊字符 (!,@,#,&) 不包括其他特殊字符
- 正则表达式:密码必须至少包含一个特殊字符
- Javascript变量包含特殊字符
- URL中包含特殊字符的HTTP状态代码
- 为javascript函数提供可能包含特殊字符的字符串参数
- 如何使用javascript/jquery/c#搜索和选择包含特殊字符的文本
- JSON编码一个包含#和其他特殊字符的字符串
- javascript正则表达式匹配字符串包含阿拉伯特殊字符符号'œ;u0640
- 如何使用 jQuery 发送包含特殊字符的查询字符串数据
- 密码的正则表达式必须包含至少八个字符,至少一个数字以及小写和大写字母以及特殊字符
- 正则表达式密码必须包含字母,至少一个特殊字符和至少一个数字
- 验证输入是否仅包含特殊字符而不包含任何数字
- 如何检查文本字段是否仅包含特殊字符
- 提交包含特殊字符的值的表单
- 包含从 Ajax POST 到 DB 插入的特殊字符的字符串
- 自定义TinyMCE按钮不适用于包含特殊字符的术语
- 如何获取id为包含特殊字符的输入元素的值
- 可以't发送包含特殊字符的密码(用空格代替)