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 上不起作用,所以我使用 jquery
和 css
来获取日期选择器,它工作正常,但我无法在 IE 中触发 ng-change
事件,在这里我附上了我的小提琴帮助。帮我解决这个问题。
Fiddle
【问题讨论】:
Internet Explorer 11 目前不支持<input type='date'>
。你可以使用 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 目前不支持<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 不支持<input type='date'>
。因此,您可以使用输入 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. 如何防止使用占位符的文本输入触发焦点输入事件?
hashchange 事件未在 IE10 和 IE11 中触发,具有 history.pushState 和 url 手动操作的组合