jQuery + handlebars IE8 value属性包含其他属性

时间:2013-10-08 18:15:59

标签: jquery backbone.js requirejs handlebars.js

我使用Handlebars.js和jquery来检索HTML temlate并渲染它。 在不同的浏览器(IE10,IE9,FF,Safari,Chrome)中,这非常有效。

然而,当使用IE8时,这根本不起作用。 我正在尝试使用输入字段呈现表单。这些字段确实出现在页面中, 但是value属性用另一个属性填充。

每个例子:

<input id="lastName" autocomplete="off" required="" value="name=lastName"/>

我希望:

<input id="lastName" autocomplete="off" required="" value="" name="lastName" />

在模板中,这看起来像&#34;:

<input id="lastName" autocomplete="off" required="" value="{{lastName}}" name=lastName/>

仅当需要由把手加载的变量lastName为空时才会发生这种情况。当此变量不为空时,它将加载此变量并显示正确的html,如下所示:

<input name="lastName" id="lastName" autocomplete="off" required="" value="Plaap"/>

我刚刚发现该文件的编译确实是问题所在。 编译版本中的属性似乎丢失了它的双引号。

当我提醒页面的编译版本时,这就是IE在IE8中的样子:

 <INPUT id=lastName value= name=lastName autocomplete="off" required>

这将在IE8中的HTML中最终导致:

  <input id="lastName" autocomplete="off" required="" value="name=lastName"/>

在firefox中查看相同的警告,这是相同的输入:

  <input id="lastName" name="lastName" autocomplete="off" required="" value="" type="text">

这里是加载模板的脚本:

 var htmlSource = $(data).html();
 var template = Handlebars.compile(htmlSource);

 //fill template with object or ''
 var compiled = template(OF.address.attributes);
 alert(compiled);

 //now place the completely compiled html into the page
 that.$el.html(compiled);

此前是否有人遇到此问题或知道如何防止这种情况发生?

1 个答案:

答案 0 :(得分:1)

经过几个小时找到解决方案后,我找到了这个脚本:innerXHTML

这很有效,可以解决问题。 IE8中没有更糟糕的字段。