我在AngularJs中工作并在所有输入表单元素中应用了占位符。由于这个原因,当页面加载时,$ dirty是隐含的,因此在IE10中显示错误消息而没有任何用户修改(也称为GitHub问题)。代码在firefox和chrome中工作正常。这个GitHub问题有什么解决方案吗?
这是代码:
<input type="email" placeholder="Enter email" name="userEmail" class="form-control" ng-model="user.email" required autofocus autocomplete="on" autofill>
请填写此字段
- edit-- 格式代码块
答案 0 :(得分:0)
您看到的行为是由IE10和required
指令的组合引起的。
要解决它,您可以编写一个自定义指令来执行验证,而不是像这样的angular required
指令:
.directive('myRequired', function () {
return {
require: '?ngModel',
link: function(scope, elm, attr, ctrl) {
if (!ctrl) return;
var validator = function(value) {
var isEmpty = ctrl.$isEmpty(value);
ctrl.$setValidity('required', !isEmpty);
return isEmpty ? '' : value;
};
ctrl.$formatters.push(validator);
ctrl.$parsers.unshift(validator);
}
};
});
然后在html中用required
替换my-required
:
<input type="email" placeholder="Enter email" name="userEmail" class="form-control" ng-model="user.email" my-required autofocus autocomplete="on" autofill />
有关完整示例,请参阅:http://plnkr.co/edit/zdtHWkxhqhtFPIwWlqWQ?p=preview
希望这适合你。