我有一个简单的登录表单,在 IE10 上,当页面加载而用户没有做任何事情时,表单字段总是无效。
表单域非常简单:
<input type="text" required class="input-block-level" placeholder="username" ng-model="username" name="username" tabindex="1">
<p class="text-error" ng-show="loginForm.username.$dirty && loginForm.username.$invalid">
<span ng-show="loginForm.username.$error.required">required</span>
</p>
http://plnkr.co/edit/DNUanGGaZDgFWYrm3gLK?p=preview
在上面的 plunker 中,您可以通过关注该字段来重现该问题,而在我的应用程序中,页面加载时会显示错误字段。在其他浏览器中它工作得很好。
最佳答案
有人写了一个gist为此,我在下面复制了所有必要的样板文件:
angular-hacks.js:
(function (window, angular, undefined) {
'use strict';
var hacks = angular.module('hacks', []);
hacks.config(['$provide', function ($provide) {
$provide.decorator('$sniffer', ['$delegate', function ($sniffer) {
var msie = parseInt((/msie (\d+)/.exec(angular.lowercase(navigator.userAgent)) || [])[1], 10);
var _hasEvent = $sniffer.hasEvent;
$sniffer.hasEvent = function (event) {
if (event === 'input' && msie === 10) {
return false;
}
_hasEvent.call(this, event);
}
return $sniffer;
}]);
}]);
})(window, window.angular);
到目前为止我还没有遇到任何问题,尽管我不会假装我已经对它进行了任何严格的回归测试。它过滤掉了 IE10 的所有输入事件,可能需要更具体一些。
关于javascript - 仅在 IE10 上加载页面时,AngularJS 表单字段脏且无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15956037/