我正在使用 Handlebars.js 和 jquery 来检索 HTML 模板并呈现它。在不同的浏览器(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" />
在模板中,这看起来像“:
<input id="lastName" autocomplete="off" required="" value="{{lastName}}" name=lastName/>
这只发生在需要由车把加载的变量 lastName 为空时。当此变量不为空时,它将加载此变量并显示正确的 html,如下所示:
<input name="lastName" id="lastName" autocomplete="off" required="" value="Plaap"/>
刚刚才发现,文件的编译确实是问题所在。编译版本中的属性似乎失去了双引号。
当我提醒页面的编译版本时,这就是 div 在 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);
这里有没有人以前遇到过这个问题或知道如何防止这种情况发生?