jQuery.html()在IE中出现乱码

时间:2014-05-09 13:37:14

标签: javascript jquery internet-explorer character-encoding keycode

我正在使用jQuery("#shipdata").html()函数来获取元素的html内容,该内容应返回日期字符串,例如' 5/14/2014'。它在Chrome,Firefox和Safari中完美运行。但在Internet Explorer中,它会返回一些奇怪的内容:

我试图提醒返回的字符串的长度,它说" 14",应该是" 9"。

此外,我试图提醒每个角色的键码,并发现" 8206"的键码不仅在字符串的开头添加,而且还在字符' /'之前和之后添加。

如何摆脱那些乱码?

2 个答案:

答案 0 :(得分:3)

字符8206,或\u200E,它是"从左到右的标记"字符。它主要用于双向文本以表示"这部分"应该是从左到右。

根据区域设置,IE可能会插入这些标记以确保正确呈现日期。例如,如果您使用的是从右到左语言设置的计算机,则可能正在使用这些标记来帮助渲染。

虽然我不知道导致它的原因,但你应该对输入进行消毒,例如空格。

<div id="shipdata">
    5/12/2014
</div>

以上会导致您的代码也失败。所以,试试这个:

jQuery('#shipdata').html().replace(/[^0-9\/]/g,'');

答案 1 :(得分:0)

通过使用一小段jquery代码,您可以实现结果。检查 DEMO

jquery代码

alert($("#shipdata").html());
alert($("#shipdata").html().length);

HTML CODE

<div id="shipdata">5/12/2014</div>