2011-03-09 84 views
0

我动态添加一个文本框的值,如:分配特殊字符的文本框

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

当我加入来自一个名为“textValue”变量中的文本框的值。但问题是,如果变量“textValue”包含带单引号(')或双引号(“)的值,如abcd'xyz或abcd”xyz,则文本框的值看起来像这个值=“abcd'xyz”或值=“abcd”xyz“。在这种情况下,值会截断,只要它获得下一个报价。我的意思是textbox的值将只有abcd不abcd'xyz。谁能建议如何解决这个问题?

+0

你想用空字符串替换单引号字符? – Sarfraz 2011-03-09 14:24:44

回答

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。这具有正确处理其他特殊字符的优点(例如,&)。

+2

你确定.html()会发送回输入元素吗?我虽然会发回$('。myClass')。 – 2011-03-09 14:27:06

+0

@Louskan:哈哈!谢谢。固定。 – 2011-03-09 14:31:07

2

也许这样做两次应该做的工作?

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

尝试这样的:

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

或者如果你喜欢:

$('.myClass').html(
    $('<input/>', { 
     type: 'text', 
     class: 'txtVector', 
     value: textValue 
    }) 
); 
1
var $html=$("<input type='text' class='txtVector'>").val(textValue); 
$('.myClass').empty().append($html);