forked from thedersen/backbone.validation
/
backbone.validation.min.js
15 lines (15 loc) · 3.42 KB
/
backbone.validation.min.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// Backbone.Validation v0.1.3
//
// Copyright (C)2011 Thomas Pedersen
// Distributed under MIT License
//
// Documentation and full license availabe at:
// http://github.com/thedersen/backbone.validation
// ----------------------------
// Backbone.Validation
// ----------------------------
Backbone.Validation=function(g,d){var h=function(f,a,e){var c;var f=f.validation[a],b=[];if(d.isFunction(f))c=f;else{for(c in f)c!=="msg"&&f.hasOwnProperty(c)&&b.push({fn:g.Validation.validators[c],val:f[c],msg:f.msg});c=b}var f="",i;if(d.isFunction(c))return c(e);else{for(b=0;b<c.length;b++)i=c[b],(i=i.fn(e,a,i.msg,i.val))&&(f+=i);return f}};return{version:"0.1.3",bind:function(f,a){var a=a||{},e=f.model,c=a.valid||g.Validation.callbacks.valid,b=a.invalid||g.Validation.callbacks.invalid;e.validate=
function(a){var g=!1,l=!0,m,j;for(j in a){if(j==="isValid")return!1;(m=h(e,j,a[j]))?(g=!0,b(f,j,m)):c(f,j)}if(g)e.set({isValid:!1});else{for(var k in e.validation)if(d.isUndefined(a[k])&&h(e,k,e.get(k))){l=!1;break}e.set({isValid:l})}return g}},unbind:function(d){d.model.validate=void 0}}}(Backbone,_);
Backbone.Validation.callbacks={valid:function(g,d){g.$("#"+d).removeClass("invalid");g.$("#"+d).removeAttr("data-error")},invalid:function(g,d,h){g.$("#"+d).addClass("invalid");g.$("#"+d).attr("data-error",h)}};Backbone.Validation.patterns={number:/^\d+$/,email:/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/,url:/^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i};
Backbone.Validation.validators=function(g,d,h){var f=g.number;return{required:function(a,e,c){var b=d.isString(a)&&h.trim(a)==="",f=d.isBoolean(a)&&a===!1;if(d.isNull(a)||d.isUndefined(a)||b||f)return c||e+" is required"},min:function(a,e,c,b){if(!(d.isNumber(a)||d.isString(a)&&a.match(f))||a<b)return c||e+" must be larger than or equal to "+b},max:function(a,e,c,b){if(!(d.isNumber(a)||d.isString(a)&&a.match(f))||a>b)return c||e+" must be less than or equal to "+b},minLength:function(a,e,c,b){a=h.trim(a);
if(d.isString(a)&&a.length<b)return c||e+" must be longer than or equal to "+b+" characters"},maxLength:function(a,e,c,b){a=h.trim(a);if(d.isString(a)&&a.length>b)return c||e+" must be shorter than or equal to"+b+" characters"},pattern:function(a,e,c,b){b=g[b]||b;if(d.isString(a)&&!a.match(b))return c||e+" is not a valid "+b}}}(Backbone.Validation.patterns,_,jQuery);