将特殊字符指定为文本框的值

时间:2011-03-09 14:22:08

标签: javascript jquery html escaping

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

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

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

4 个答案:

答案 0 :(得分:4)

您可以使用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。这样做的好处是可以正确处理其他特殊字符(例如&)。

答案 1 :(得分:3)

试试这样:

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

或者如果您愿意:

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

答案 2 :(得分:2)

也许两次这样做应该可以胜任?

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

答案 3 :(得分:1)

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