IE7中的Javascript InnerHTML弄乱了INPUT标签

时间:2009-08-10 09:55:44

标签: javascript jquery html internet-explorer

当我收到包含输入[type = text]元素的元素的innerHTML时,在IE7中删除了值和id周围的语音标记,即

<input type="text" id="test" value="test" />

变为:

<input type="text" id=test value=test />

除了我正在使用一个带有html片段并将JSON绑定到它的JQuery插件这一事实之外,这没什么问题。这意味着如果我有一个模板:

<div id="template"><input type="text"  value="${ValueToBind}" /></div>

当我通过 document.getElementByID(“template”)。innerHTML 检索时,我得到:

<input type="text"  value=${ValueToBind} />

因此,如果我用空格绑定一个字符串,即“这是一个测试”,则输出为:

<input type="text"  value=this is a test />

显然,这是无效的HTML并导致我的应用程序遭受严重破坏。我真的需要这样做来检索模板中的html,而不是IE尝试做任何有用的事情,如删除“语音标记。

干杯,克里斯。

3 个答案:

答案 0 :(得分:2)

答案 1 :(得分:0)

如果问题是IE7特定的,快速修复可能是为IE7添加IE conditional comment,其代码重新插入引号。

答案 2 :(得分:0)

我认为这不是你可以直接解决的问题,因为无引号的html就是IE7如何在内部代表DOM节点。

我对确保您获得完全正确模板的最佳方法的看法是自己读取每个节点的每个属性而不是内部html,然后用引号标记出来。

innerHTML removes attribute quotes in Internet Explorer

其他想法。

使用jQuery的.html()

http://docs.jquery.com/Attributes/html

通常也是“jQuery方式”,而不是.getElementById