转义for循环中文本输入的特殊字符

时间:2015-04-09 15:15:43

标签: javascript jquery html loops input

我有一个哈希数组,每个哈希都包含基于字符串的键/值对。奇怪的是,虽然我注意到当循环完成并且字符串中有撇号时,省略了撇号之后的任何字符(包括撇号)。例如,如果我有一个名称值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);
  }
});
&#13;
<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>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:1)

问题是因为您需要转义附加到字符串的品牌中的',或者将字符串分隔符更改为'并使用"来分隔属性值。后者更为直截了当。试试这个:

&#13;
&#13;
$(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);
    }
});
&#13;
<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>
&#13;
&#13;
&#13;