Client-side Validation should be simple and clean.
Don't let Client-side Validation dirty your controller.
Setup your Validation on config phase by using some rules (example)
If you prefer schema over html attributes , try angular-validation-schema
(Demo)
And add Validation in your view only.
angularjs 1.2.x support to version angular-validation 1.2.x
angularjs 1.3.x support after version angular-validation 1.3.x
angularjs 1.4.x support after version angular-validation 1.4.x
AngularJS 1.2.x (for angular-validation 1.2.x)
AngularJS 1.3.x (for angular-validation 1.3.x)
AngularJS 1.4.x (for angular-validation 1.4.x)
http://huei90.github.io/angular-validation/
http://plnkr.co/edit/rjIIkX (Bootstrap framework)
Install with npm
npm install angular-validation
or with bower
bower install angular-validation
<script src="dist/angular-validation.js"></script>
<script src="dist/angular-validation-rule.js"></script>
angular.module('yourApp', ['validation']);
// OR including your validation rule
angular.module('yourApp', ['validation', 'validation.rule']);
<form name="Form">
<div class="row">
<div>
<label>Required</label>
<input type="text" name="required" ng-model="form.required" validator="required">
</div>
<div>
<label>Url</label>
<input type="text" name="url" ng-model="form.url" validator="required, url">
</div>
<button validation-submit="Form" ng-click="next()">Submit</button>
<button validation-reset="Form">Reset</button>
</div>
</form>
- Required
- Url
- Number
- Min length
- Max length
5 and 6 require you to pass an inline parameter to set the length limit. Eg, maxlength=6
.
Anyone can give a PR
for this angular-validation for more built-in validation
To integrate this package with Bootstrap you should do the following.
Add the following LESS to your project
.ng-invalid.ng-dirty{
.has-error .form-control;
}
label.has-error.control-label {
.has-error .control-label;
}
Change the Error HTML to something like:
$validationProvider.setErrorHTML(function (msg) {
return "<label class=\"control-label has-error\">" + msg + "</label>";
});
You can add the bootstrap class .has-success
in a similar fashion.
To toggle .has-error
class on bootstrap .form-group
wrapper for labels and controls, add:
angular.extend($validationProvider, {
validCallback: function (element){
$(element).parents('.form-group:first').removeClass('has-error');
},
invalidCallback: function (element) {
$(element).parents('.form-group:first').addClass('has-error');
}
});
MIT
See release
Thanks for all contributors