Javascript 带有数据列表的输入-AngularJS的IE中未触发ng更改
我有一个带有datalist的输入标记,在InternetExplorer11中选择时不会触发ng更改。它只会在输入模糊时触发。它是用铬做的 代码笔如下:Javascript 带有数据列表的输入-AngularJS的IE中未触发ng更改,javascript,angularjs,angularjs-ng-change,Javascript,Angularjs,Angularjs Ng Change,我有一个带有datalist的输入标记,在InternetExplorer11中选择时不会触发ng更改。它只会在输入模糊时触发。它是用铬做的 代码笔如下: {{selectedVal}} 如果您检查代码,您可以看到在chrome中,数据列表值显示在下面的选择中。在IE中,该值仅在按tab键或在标记外部单击时显示 请让我知道如何在IE中工作,以便在选择数据列表值时触发ng更改 注意:如果您将AngularJS版本更改为1.2.x,则工作正常。上面的任何东西都不起作用。这是一个更大应用程序的简
{{selectedVal}}
如果您检查代码,您可以看到在chrome中,数据列表值显示在下面的选择中。在IE中,该值仅在按tab键或在标记外部单击时显示
请让我知道如何在IE中工作,以便在选择数据列表值时触发ng更改
注意:如果您将AngularJS版本更改为1.2.x,则工作正常。上面的任何东西都不起作用。这是一个更大应用程序的简化版本,我在从数据列表中选择时触发后端服务 若要获得预期结果,请对输入字段使用oninput事件的以下选项
<input list="testList" name="origin node" ng-model="SelectedDoctor" oninput = "angular.element(document.getElementById('check')).scope().LoadSessionData(this)" autocompletestListte="off" required />
<datalist id="testList" >
ng change未被激发,因为ng click或ng change所在的数据列表不起作用
将值赋给scope变量-selectedVal后,运行$scope.$apply()在UI上查看所选选项
代码示例-AngularJS忽略Internet Explorer 11中的
input
事件,因为Microsoft对input
的支持存在很大缺陷。但是,您可以实现自己的指令并将其分配给元素,以便在发生输入
事件时自己发出更改
事件
.directive('input', function() {
return {
link: function(scope, element, attrs) {
element.on('input', function() { element.triggerHandler('change'); });
}
};
});
我不建议使用
oninput
属性,因为您应该始终坚持使用ng-*
属性,并且不要混淆AngularJS回调和本机JavaScript事件处理程序。使用oninput,您可能会遇到与AngularJS数据模型有关的其他问题。谢谢Naga Sai。这就像预期的一样!谢谢你的帮助!我不建议混合使用本机JavaScript事件处理程序,例如oninput
和AngularJS回调!
.directive('input', function() {
return {
link: function(scope, element, attrs) {
element.on('input', function() { element.triggerHandler('change'); });
}
};
});