AngularJS:修改innerhtml的验证
AngularJS: Change innerHTMLl on validation
我想根据验证测试的结果更改元素的innerHTML
。作为angular.js
的新手,我不确定如何实现这一目标。我试图添加自定义directive
,但它不起作用。我想对特定元素的所有验证测试作出反应。也许,这里有人能告诉我最好的方法。
这是我的(不工作)代码:
. js
loginApp.directive('iconValidator', function() {
return {
require: 'ngModel',
link: function (scope, elm, attrs, ctrl) {
ctrl.$validators.iconValidator = function (modelValue, viewValue) {
if (ctrl.$isEmpty(modelValue)) {
scope.iconHtml='';
return true;
}
if (ctrl.$touched && ctrl.$invalid {
debuger
scope.iconHtml='<i class="fa fa-times-circle fa-lg" style="color:red"></i>';
return false;
}
scope.iconHtml='';
return true;
};
}
};
});
. html
<div class="col-md-6">
<div class="signup-form">
<h2>New User Signup!</h2>
<form action="#" novalidate method="post" name="regForm" ng-submit="submit()">
<div class="input-group margin-bottom-sm">
<input type="text" class="form-control" placeholder="Username" iconValidator ng-model="userName" required autofocus/>
<span class="input-group-addon" ng-bind-html="iconHtml"></span>
</div>
</form>
</div>
</div>
另外,我还包含了模块ngSanitize
。
也许有人能帮我把一个图标放在<span>
元素作为innerHTML
?
我认为更好的方法是使用ngMessages指令来处理验证错误消息。
例如,它可以像这样:
angular.module('demo', ['ngMessages']).controller('mainController', function($scope) {
$scope.submit = function() {};
});
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css" />
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css" />
<script src="https://code.angularjs.org/1.4.3/angular.js"></script>
<script src="https://code.angularjs.org/1.4.3/angular-messages.js"></script>
<div class="container" ng-app="demo" ng-controller="mainController">
<form novalidate="" name="regForm" ng-submit="submit()">
<div class="form-group">
<div class="form-group margin-bottom-sm">
<input type="text" class="form-control" placeholder="Username" name="userName" ng-model="userName" ng-minlength="5" required="" autofocus="" />
<div ng-messages="regForm.userName.$error" role="alert">
<div ng-message="required, minlength">
<i class="fa fa-times-circle fa-lg" style="color:red"></i> Username must be at least 5 chars long
</div>
</div>
</div>
</div>
</form>
</div>
我用html:
做了解决方案<i ng-if="regForm.userName.$touched"
ng-class="{'fa fa-lg fa-times-circle': regForm.userName.$invalid, 'fa fa-lg fa-check-circle':regForm.userName.$valid}"
ng-style="regForm.userName.$invalid ?{color: 'red'}: {color: 'green'}"/>
我想问,是否有可能消毒这样的html,因为相同的逻辑将有几个组件,我不想复制过去。
相关文章:
- 正在验证8个真/假复选框或复选框中的2个
- 借助asp.net验证或java脚本对多个文本进行验证
- 转义符不能与innerHTML一起使用
- jQuery自定义验证比较多个输入的序列
- 使用html中的外部javascript进行数据验证
- 如何使用jquery Validation验证Formspread
- jquery中的文本框验证
- 在验证和发送邮件后更改联系人表单的 html
- 代码不会验证
- JS验证ajax返回的html中的表单数据
- 同步调用,直到用户通过angular验证为访问者
- 带有加号的电话号码验证(可选)
- 解析javascript表单验证器
- 两位数的月份日期验证
- 使用angularjs验证文本框中的电子邮件
- innerHtml()中的Ampersand未正确读取并在JS中进行验证
- Firefox加载项验证提供了document.write&innerHTML错误
- AngularJS:修改innerhtml的验证
- 使用innerHTML文本的Javascript表单验证不会消失
- 无法设置空 Javascript 验证的属性 'innerHTML'