一段时间后隐藏带有 angularjs 表单验证的错误标签
Hide error labels shown with angularjs form validation after some time
我正在使用 angularjs 表单验证进行客户端验证。我需要在消息出现 3 秒后隐藏使用 angularjs 错误表单验证方法显示的标签。
Html 看起来像这样,
<form name="userForm" novalidate>
<div class="form-group">
<label>Name</label>
<input type="text" name="name" class="form-control" ng-model="name" required>
<label ng-show="userForm.name.$invalid && !userForm.name.$pristine" class="help-block">You name is required.</label>
</div>
<div class="form-group">
<label>Email</label>
<input type="email" name="email" class="form-control" ng-model="email">
<label ng-show="userForm.email.$invalid && !userForm.email.$pristine" class="help-block">Enter a valid email.</label>
</div>
</form>
正在寻找通用解决方案,例如自定义指令或其他。
提前致谢
我创建了一个这样的指令,
app.directive('timeoutHtml', function($timeout) {
return {
restrict: 'A',
scope: {
onVisible: '=showModel'
},
link: function(scope, element, attrs) {
scope.$watch(function() {
return attrs.ngShow;
}, function(newValue, oldValue) {
checkVisibility();
});
function checkVisibility() {
if (element.is(':visible')) {
scope.$watch('onVisible', function(newValue, oldValue) {
console.log(newValue)
if (newValue === true) {
$timeout(function() {
scope.onVisible = false;
}, 2000);
}
});
}
};
}
};
});
并将html改成了这个,
<form name="userForm" novalidate="">
<div class="form-group">
<label>Name</label>
<input type="text" name="name" class="form-control" ng-model="name" required="" />
<label timeout-html="" show-model="submitted" ng-show="userForm.name.$invalid && submitted" class="help-block">You name is required.</label>
</div>
<div class="form-group">
<label>Email</label>
<input type="email" name="email" class="form-control" ng-model="email" required />
<label ng-show="userForm.email.$invalid && submitted" class="help-block">Enter a valid email.</label>
</div>
<button type="submit" ng-click="submitted=true;">Submit</button>
</form>
Plunker 演示:https://plnkr.co/edit/P4uopx4MhOFEszXuuYyA?p=preview
我正在使用 angularjs 表单验证进行客户端验证。我需要在消息出现 3 秒后隐藏使用 angularjs 错误表单验证方法显示的标签。
Html 看起来像这样,
<form name="userForm" novalidate>
<div class="form-group">
<label>Name</label>
<input type="text" name="name" class="form-control" ng-model="name" required>
<label ng-show="userForm.name.$invalid && !userForm.name.$pristine" class="help-block">You name is required.</label>
</div>
<div class="form-group">
<label>Email</label>
<input type="email" name="email" class="form-control" ng-model="email">
<label ng-show="userForm.email.$invalid && !userForm.email.$pristine" class="help-block">Enter a valid email.</label>
</div>
</form>
正在寻找通用解决方案,例如自定义指令或其他。
提前致谢
我创建了一个这样的指令,
app.directive('timeoutHtml', function($timeout) {
return {
restrict: 'A',
scope: {
onVisible: '=showModel'
},
link: function(scope, element, attrs) {
scope.$watch(function() {
return attrs.ngShow;
}, function(newValue, oldValue) {
checkVisibility();
});
function checkVisibility() {
if (element.is(':visible')) {
scope.$watch('onVisible', function(newValue, oldValue) {
console.log(newValue)
if (newValue === true) {
$timeout(function() {
scope.onVisible = false;
}, 2000);
}
});
}
};
}
};
});
并将html改成了这个,
<form name="userForm" novalidate="">
<div class="form-group">
<label>Name</label>
<input type="text" name="name" class="form-control" ng-model="name" required="" />
<label timeout-html="" show-model="submitted" ng-show="userForm.name.$invalid && submitted" class="help-block">You name is required.</label>
</div>
<div class="form-group">
<label>Email</label>
<input type="email" name="email" class="form-control" ng-model="email" required />
<label ng-show="userForm.email.$invalid && submitted" class="help-block">Enter a valid email.</label>
</div>
<button type="submit" ng-click="submitted=true;">Submit</button>
</form>
Plunker 演示:https://plnkr.co/edit/P4uopx4MhOFEszXuuYyA?p=preview