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

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

Fiddle

【问题讨论】:

  • Internet Explorer 11 目前不支持<input type='date'>。你可以使用 ng-datepicker。
  • @ Ahmet Can Güven 我知道所以只有我应用日期不受支持的浏览器我应用 jquery 来获取另一个选择器请检查我在 IE 中的小提琴
  • 请用 TTP 更新您的小提琴链接。您正在尝试从 HTTPS 加载外部资源,由于安全原因,它可能在某些浏览器上失败。

标签: javascript jquery angularjs datepicker


【解决方案1】:

Internet Explorer 11 目前不支持<input type='date'>,因为您已经在尝试寻找解决方法。您可以使用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 日期选择器来处理所有浏览器。

    【讨论】: