【问题标题】:Assigning special character as a value of a textbox将特殊字符分配为文本框的值
【发布时间】:2011-03-09 14:22:07
【问题描述】:

我正在动态添加一个文本框,例如:

$('.myClass').html("<input type='text' class='txtVector' value='" + textValue + "'>");

我从一个名为“textValue”的变量中添加文本框值。但问题是,如果变量“textValue”包含带有单引号(')或双引号(“)的值,如 abcd'xyz 或 abcd"xyz,则文本框值看起来像 this value="abcd'xyz" 或 value ="abcd"xyz"。在这种情况下,一旦得到下一个引号,值就会被截断。我的意思是文本框的值只会是 abcd 而不是 abcd'xyz。谁能建议如何解决这个问题?

【问题讨论】:

  • 你想用空字符串替换单引号字符吗?

标签: javascript jquery html escaping


【解决方案1】:

你可以使用val():

$('.myClass').html("<input type='text' class='txtVector'>").children().val(textValue);

或者

$('.myClass').append(
    $("<input type='text' class='txtVector'>").val(textValue)
);

或者

$("<input type='text' class='txtVector'>").val(textValue).appendTo(".myClass");

请参阅val(string) docs。这样做的好处是可以正确处理其他特殊字符(例如&amp;)。

【讨论】:

  • 你确定 .html() 会发回输入元素吗?我虽然它会发回 $('.myClass') 一个。
  • @Louskan:Doh!谢谢你。固定。
【解决方案2】:

试试这样:

$('.myClass').html(
    $('<input/>')
        .attr('type', 'text')
        .addClass('txtVector')
        .val(textValue)
);

或者如果您愿意:

$('.myClass').html(
    $('<input/>', {
        type: 'text',
        class: 'txtVector',
        value: textValue
    })
);

【讨论】:

    【解决方案3】:

    也许分两次就可以完成这项工作?

    $('.myClass').html("<input type='text' class='txtVector' value='' id='whatever'>");
    $('#whatever').val(textValue);
    

    【讨论】:

      【解决方案4】:
      var $html=$("<input type='text' class='txtVector'>").val(textValue);
      $('.myClass').empty().append($html);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-01-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-14
        • 1970-01-01
        • 2019-08-09
        • 1970-01-01
        相关资源
        最近更新 更多