【发布时间】:2011-03-21 20:49:55
【问题描述】:
我从服务器返回一个包含双引号的值。我需要用该值填充输入标签。
我尝试过使用 escape(myVariable),但这会将空格转换为 %20 等。 我想我可以写一个 if/then 来说明字段中是否有双引号,然后使用 value='',但是如果字段中同时有双引号和单引号我该怎么办?
【问题讨论】:
标签: javascript escaping
我从服务器返回一个包含双引号的值。我需要用该值填充输入标签。
我尝试过使用 escape(myVariable),但这会将空格转换为 %20 等。 我想我可以写一个 if/then 来说明字段中是否有双引号,然后使用 value='',但是如果字段中同时有双引号和单引号我该怎么办?
【问题讨论】:
标签: javascript escaping
input.value = val.replace(/"/g, '"');
【讨论】:
将双引号替换为"。
【讨论】:
我从 包含双引号的服务器 它。
您将您的问题标记为“javascript”,因此我假设您正在通过 ajax 加载此服务器值。
如果包含您的值的变量已被分配,则没有理由对任何内容进行编码。
这是一个示例脚本,它采用已分配的变量并将其放入新的表单元素中。可以看到,表单元素同时显示单引号和双引号完全没有问题。
<html>
<body>
<form id='myform'></form>
<script type='text/javascript'>
var myField = "James' answer is \"the best\"";
var i = document.createElement('input');
i.type = 'text';
i.name = 'testField';
i.value = myField;
document.getElementById('myform').appendChild(i);
</script>
</body>
</html>
【讨论】:
$("#input").val(unescape('"test " value" "'))
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.0/jquery.min.js"></script>
Test value: <input type="text" id="input" />
【讨论】:
最好的解决方案是使用 php 语言的 htmlentities:
<input value="<?php echo htmlentities($value);?>">
在所有情况下都有效:
1) 单引号
示例:朱莉娅的猫
2) 双引号
示例:约翰的自行车
享受和分享代码以挽救他人的生命:)
【讨论】: