tuna-angular-unobtrusive-validation
v1.0.3
Published
MVC C# data annotations for angularjs. Replaces the need for jquery validation framework(s).
Downloads
4
Readme
README
MVC C# data annotations for angularjs. Replaces the need for jquery validation framework(s).
Goals:
- Simple
- Lightwight
- Easily extendable
How to install
npm install tuna-angular-unobtrusive-validation --save
Usage
It is possible to configure the attribute name to match against (default for jquery-unobtrusive-validation is "val", that is what MVC will generate):
Tuna.ValidatorAttrName = "val";
The plugin has a global variable named Tuna.Validators, it contains two properties that can be configured.
- Tuna.Validators.texts: containing texts for validators.
- Tuna.Validators.rules: functions that validates input.
Existing validations:
- regex: 'Invalid value',
- date: 'Invalid date',
- email: 'Invalid email',
- range: 'Range must be between {0} and {1}',
- digits: 'Only digits allowed',
- number: 'Only numbers allowed',
- required: 'Required field',
- equalto: '{0} must match {1}'
Change default messages, globally
Tuna.Validators.texts["required"] = "override default custom text";
Change default messages, inline
<input type="input" data-val="true" data-val-required="will override default text" />
Change existing validation
Tuna.Validators.rules["required"] = function (scope, element, attrs) {
return function (modelValue, viewValue) {
return viewValue != ""; //true === is valid.
}
};
Add custom validation
Tuna.Validators.texts["nozero"] = "zeros are not allowed!";
Tuna.Validators.rules["nozero"] = function (scope, element, attrs) {
var regex = new RegExp(/^[0]$/);
return function (modelValue, viewValue) {
return !regex.test(viewValue || '');
};
};
//add error callback
Tuna.ValidatorEvents.onElementError = function (ngModel, element, text) {
alert(text);
}
<input type="input" placeholder="no zeros" data-val="true" data-val-nozero />
<input type="input" placeholder="no zeros" data-val="true" data-val-nozero="override nozero text" />
How do I get set up? ###
- to try, open index.html in demo page
- to experment, run 0-install.bat then 1-build.bat