Angular和Internet Explorer 11 - 输入无法正常工作

时间:2015-12-16 14:15:21

标签: angularjs internet-explorer internet-explorer-11

我在IE中使用ng-model(11和所有以前的版本)的输入存在严重问题,但一切都在所有其他浏览器中正常工作。这个问题上周首次出现。我们没有对我们的应用程序的这一部分进行任何更新,并且在上周之前没有听到用户有此问题的报告。

我们正在运行Angular 1.4.3。

基本上,像这样的输入:

<input data-ng-model="answer.value"></input>

未正确更新模型。看起来像onChange或onFocus事件的问题 - 输入永远不会丢失他们的ng-pristine和ng -notouched类。它们正在从模型中正确显示初始值,但用户所做的任何更新都无法保存。我们已经尝试向我们的头部添加<meta http-equiv="X-UA-Compatible" content="IE=11" />标签,但无济于事。从输入中删除所有验证没有任何区别。没有控制台错误或警报。

2 个答案:

答案 0 :(得分:2)

就我而言,我有一个父组件和一个子输入。

父组件的Angular绑定属性选择不佳;我将属性称为“ disabled”。 disabled custom 属性名称的错误选择,因为它是许多HTML元素的 standard 属性。

当我将自定义属性名称更改为“ custom-disabled”时,子输入开始响应。

Internet Explorer解释了一些祖先disabled属性,表示应禁用所有后代。因此我的角度输入ng-modelng-changeng-blurng-focus无法正常工作。

我应该知道:当我问$('input').is(':disabled')时,结果是true。我忽略了这一点,因为input元素本身没有disabled属性;只有一个祖先元素!

答案 1 :(得分:1)

我有类似问题,解决方案似乎很容易。如果你有类似的代码:

<form name="myForm">
    <table ng-disabled="formToggle">
        ...
        <input ng-model="form.name" />
        ...
    </table>
</form>

IE10,IE11不会检查字段,也不会在表单上设置原始的脏值(其他浏览器工作正常)。只需删除ng-disabled(在本例中为table,在其他情况下为parent元素),它将起作用。