Ibrahim Muhammad
Twitter: @ibrahimm
http://ibrahimmuhammad.com
https://slides.com/ibrahimm/ng-validation
<input type="number"
ng-model="creditCard.number"
name="number"
min="0" max="9999999999999999"
integer />
<span ng-show="form.size.$error.integer">
The value is not a valid integer!
</span>
<span ng-show="form.size.$error.min || form.size.$error.max">
The value must be in range 0 to 9999999999999999!
</span>
The Good:
The Bad:
{
"expiryDate": ["Expiry date must be after today"],
"number": false // or missing
}
function validate(){
var errors = {};
if (this.expiryDate > today) {
addError(errors, 'name', 'Expiry date must be after today');
}
return errors;
}
function validateDateGreaterThan(model, attribute, value) {
if (model[attribute]) <= value) {
addError(model, attribute, attribute + ' must be after '+ value);
// error added to model.errors
}
}
validateDateGreaterThan(creditCard, 'expiryDate', Date.now())
var schema = {
'expiryDate': {
'min': new Date("1 Jan 1980"),
'max': Date.now(),
'type': 'date'
}
}
var errors = validate(model, schema);
var schema = {
'number': {
'min': function(creditcard) {
var len = creditcard.number.length;
if (creditcard.type === 'visa'){
return (len === 13 || len == 16);
} else { //mastercard
return len === 16;
}
}
}
}
var schema = {
'number': {
'checksum': function(creditcard) {
var errorMessage = "Checksum is not valid";
return [isChecksumValid(creditcard.number), errorMessage];
}
}
}
validate(creditcard)
.field('number').type('number')min(0).max(9999999999999999).checksum()
.field('expiryDate').type('date').min(Date(MIN_DATE)).max(Date.Today())
Interested in OS library that does this? @ibrahimm