当页面仅在IE10上加载时,AngularJS的表单字段是肮脏和无效的
AngularJS form field is dirty and invalid when page loads on IE10 only
我有一个简单的登录表单,在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 =
预览在上面的柱塞中,您可以通过关注字段来重现问题,而在我的应用程序中,当页面加载时显示错误字段。
有人为此写了一个要点,我在下面复制了所有必要的样板文件:
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的所有输入事件,可能需要更具体。
我的变通办法:
将ng-if="true"
添加到输入元素。
仅在angular 1.2.28上测试过
相关文章:
- 通过单击动态加载的表中同一行的另一个字段来更新一行的字段
- 添加和删除隐藏字段数组中的值,而不提交表单
- 单击鼠标,用MySQL数据填充html表单输入字段
- 带有条件字段的PHP表单
- 防止在输入字段上单击事件
- 高级自定义字段按单选按钮值排序
- 使用JQuery启用输入字段的单选框
- SmartyStreets:使用条件字段调整表单中已验证勾号的位置
- 组合功能以使用 Jquery 在一组单选按钮中显示输入字段和单选按钮
- 使只读字段不可单击
- 使用 JavaScript 进行 HTML 字段表单验证
- JavaScript 在不输入输入字段/表单的情况下传递输入
- JQuery 在动态添加输入字段时单击浏览,而 ajax 不起作用
- 我可以让时间选择器在输入字段中单击时触发吗?
- 将隐藏字段表单值传递给控制器
- 隐藏小视口中的字段,单击按钮再次显示
- 我可以给html文本字段表单中的元素提供相同的名称和id吗
- 在新行上显示输入字段(基于单选)
- 在文本字段(表单)后插入节点
- 动态生成的名称字段的单选按钮组验证