在for循环中转义文本输入的特殊字符
Escaping special characters for text inputs in a for-loop
我有一个哈希数组,每个哈希由基于字符串的 key/value 对组成。奇怪的是,尽管我注意到当循环完成并且字符串中有撇号时,撇号后面的任何字符都将被省略(包括撇号)。例如,如果我有一个名称值 Randy's Donuts
,它将在输入中仅显示为 Randy
。有没有办法在循环中动态地转义这些撇号(更不用说我不知道的任何其他特殊字符)?
$(function() {
var brands = [{name: "Randy's Donuts"}, {name: "Joe's American Bar & Grill"}, {name: "Macy's"}];
for (var i = 0; i < brands.length; i++) {
var brandName = "<td><input type='text' value='" + brands[i]["name"] + "'></td>";
var $tr = "<tr>" + brandName + "</tr>";
$("table").append($tr);
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form action="">
<table></table><br />
<input type="submit" />
</form>
问题是因为您需要转义附加到字符串的品牌中的 '
,或者将字符串分隔符更改为 '
并使用 "
来分隔属性值。后者更直接。试试这个:
$(function() {
var brands = [{ name: "Randy's Donuts" }, { name: "Joe's American Bar & Grill" }, { name: "Macy's" }];
for (var i = 0; i < brands.length; i++) {
var brandName = '<td><input type="text" value="' + brands[i]["name"] + '"></td>';
var $tr = "<tr>" + brandName + "</tr>";
$("table").append($tr);
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form action="">
<table></table>
<br />
<input type="submit" />
</form>
我有一个哈希数组,每个哈希由基于字符串的 key/value 对组成。奇怪的是,尽管我注意到当循环完成并且字符串中有撇号时,撇号后面的任何字符都将被省略(包括撇号)。例如,如果我有一个名称值 Randy's Donuts
,它将在输入中仅显示为 Randy
。有没有办法在循环中动态地转义这些撇号(更不用说我不知道的任何其他特殊字符)?
$(function() {
var brands = [{name: "Randy's Donuts"}, {name: "Joe's American Bar & Grill"}, {name: "Macy's"}];
for (var i = 0; i < brands.length; i++) {
var brandName = "<td><input type='text' value='" + brands[i]["name"] + "'></td>";
var $tr = "<tr>" + brandName + "</tr>";
$("table").append($tr);
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form action="">
<table></table><br />
<input type="submit" />
</form>
问题是因为您需要转义附加到字符串的品牌中的 '
,或者将字符串分隔符更改为 '
并使用 "
来分隔属性值。后者更直接。试试这个:
$(function() {
var brands = [{ name: "Randy's Donuts" }, { name: "Joe's American Bar & Grill" }, { name: "Macy's" }];
for (var i = 0; i < brands.length; i++) {
var brandName = '<td><input type="text" value="' + brands[i]["name"] + '"></td>';
var $tr = "<tr>" + brandName + "</tr>";
$("table").append($tr);
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form action="">
<table></table>
<br />
<input type="submit" />
</form>