IE 11 没有触发“ng-change”(AngularJS)

Posted

技术标签:

【中文标题】IE 11 没有触发“ng-change”(AngularJS)【英文标题】:IE 11 is not triggering "ng-change" (AngularJS) 【发布时间】:2018-01-02 16:45:51 【问题描述】:

大家好,我正在使用angularjs,使用datepicker 功能。输入类型日期在 IE 上不起作用,所以我使用 jquerycss 来获取日期选择器,它工作正常,但我无法在 IE 中触发 ng-change 事件,在这里我附上了我的小提琴帮助。帮我解决这个问题。

Fiddle

【问题讨论】:

Internet Explorer 11 目前不支持&lt;input type='date'&gt;。你可以使用 ng-datepicker。 @ Ahmet Can Güven 我知道所以只有我应用日期不受支持的浏览器我应用 jquery 来获取另一个选择器请检查我在 IE 中的小提琴 How to make <input type="date"> supported on all browsers? Any alternatives?的可能重复 请用 TTP 更新您的小提琴链接。您正在尝试从 HTTPS 加载外部资源,由于安全原因,它可能在某些浏览器上失败。 【参考方案1】:

Internet Explorer 11 目前不支持&lt;input type='date'&gt;,因为您已经在尝试寻找解决方法。您可以使用datepicker onSelect 并更新您的模型。您可以手动触发更改功能。这样您就可以从支持 html5 Date 的浏览器和其他浏览器中收集更改。

你可以找到小提琴here

function LoginController($scope) 
    $scope.changeDetected = function() 
        console.log($scope.date);
    

    if ($('#test')[0].type != 'date') $('#test')
        .datepicker(
            onSelect: function(date) 
                $scope.date = date;
                $scope.$apply();
                $scope.changeDetected(date);
            
        );
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div ng-app ng-controller="LoginController">
	<input type="date" id="test" ng-model="date" ng-change="changeDetected()"/>
  date
</div>

【讨论】:

fiddle 无法在 IE 中打开 @jose 添加小提琴链接 我现在仍然无法触发 ng-change 事件,或者我需要那个文本框脏表单 true @jose 为 ng-change 编辑小提琴。【参考方案2】:

它不工作的原因是 IE11 不知道 type="date" 请看截图!! https://iamlalit.tinytake.com/sf/MTgxNjMyN181OTAwMzE4

【讨论】:

在我的小提琴中,我应用 css 来获取选择器以任何方式解决 pblm【参考方案3】:

IE 11 不支持&lt;input type='date'&gt;。因此,您可以使用输入 type='text' 或 date picker。

但无论如何,您需要验证该字段是否已输入此讨论的无效日期

javascript: how to validate dates in format MM-DD-YYYY?


您应该阅读以下讨论以更好地理解

How to make <input type="date"> supported on all browsers? Any alternatives?

How to get HTML 5 input type="date" working in Firefox and/or IE 10

【讨论】:

【参考方案4】:

下面我们说的是IE11:

我认为原因是 jquery .datepicker 方法不会将日期更改委托给您的 ng-change 方法。

如果您修改输入类型="text",ng-change 也不会触发警报。 但是如果你手动修改输入内容,就会触发警告信息。

也许您应该使用一些角度日期选择器而不是 jquery 日期选择器来处理所有浏览器。

【讨论】:

以上是关于IE 11 没有触发“ng-change”(AngularJS)的主要内容,如果未能解决你的问题,请参考以下文章

使用 ng-model 时 AngularJS $scope 不更新(ng-change 触发?)

angular 为select赋值时为啥不会触发ng-change

Label :hover 属性在 IE10 和 IE11 中触发不正确的元素

IE 10, 11. 如何防止使用占位符的文本输入触发焦点输入事件?

上载 IE11上没有激活元素事件,IE的预加载后备

hashchange 事件未在 IE10 和 IE11 中触发,具有 history.pushState 和 url 手动操作的组合