希望重新创建Angular 1.3.X中我们可以使用的一些功能 - 我创建的应用 能够很好地工作(或者至少足够好)在IE 8中。出于这个原因,我(遗憾地)被限制为不使用1.3.X.我试图模仿1.3.X中提供的$ng-touched
attr时遇到了一些麻烦。
我们的应用程序的一部分需要提醒用户,如果他们的表单元素是tab
,那么他们的表单元素就无效了。就目前而言,它不会在任何表单元素上设置$invalid
attr,除非我已在文本中输入并删除它。我尝试使用$pristine
和$dirty
来实现$invalid
,但它们似乎都是根据输入的值来实现的,而不是它是否被触及了(也许这是1.3.X的一大优势)
目标:当用户在表单中进行制表时,可以触发验证并将每个空表单元素设置为$invalid
,如果它为空白。基本上是模仿1.2.X中$ ng-touching attr的行为。这就是我到目前为止所拥有的:
angular.module('goodStewardApp')
.directive('chf-validate', function () {
return {
require: 'ngModel',
link: function(scope, elm, attrs, ctrl) {
$(elm).blur(
function(elm) {
ctrl.$setValidity(elm, false);
}
);
}
};
});
非常感谢任何帮助。谢谢!
答案 0 :(得分:1)
在角度1.2.x中完成模拟ng-touched
行为的最佳方法是使用ngBlur将验证属性设置为true。所以:
<form name="aForm">
<input name="foo" ng-model="foo.bar" ng-blur="validateThisElement=true" ng-required="true">
<div ng-show="aForm.foo.$error.required && validateThisElement">
Oh no! An alert!
</div>
</form>
这允许您在用户tab
之后通过表单运行验证,这是人们习惯使用计算机的常用方式,用于与您的角形式/应用程序进行交互。希望这有助于任何人因IE8原因仍然坚持使用1.2.X!