forked from PortableSheep/Pliant
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathjquery.pliant.min.js
More file actions
1 lines (1 loc) · 9.03 KB
/
jquery.pliant.min.js
File metadata and controls
1 lines (1 loc) · 9.03 KB
1
(function(e){"use strict";e.expr[":"].plVisible=function(i){return"none"!=e(i).css("display")},e.pliantPlugin=function(e,t){i[e]=t};var i={},t=function(t,s,n){this.instance=n;for(var a in i[t]){var l=i[t][a];this[a]=e.isArray(l)?this[a]?this[a].concat(l):l:e.isPlainObject(l)?this[a]?e.extend(!0,{},this[a],l):l:l}this.options=e.extend(!0,{},i[t].options,s),this._create.call(this)};t.prototype={instance:null,options:{},_create:e.noop,_ready:e.noop},e.fn.pliant=function(s){var n=e.extend(!0,{fields:[],appendRulesToFieldClass:!1,reconcileFieldOrder:!1,haltOnFirstInvalidRule:!0,hideMessageContainerOnLoad:!0,validateOnChange:!0,focusFirstInvalidField:!1,ignoreHidden:!0,ignoreDisabled:!0,validateOnSubmit:!0,validateOnSubmitSelector:null,validateOnSubmitEvent:"click",validateOnSubmitScope:null,inputSelector:":input[type!=button]",messageElement:"<label />",messageWrap:null,messageContainer:null,messageElementClass:"pl-element-error",messageWrapClass:"pl-wrap-error",inputClass:"pl-input-error",rules:{required:{validate:function(){return this.is("[type=checkbox],[type=radio]")?this.is(":checked"):e.trim(this.val()).length>0},message:"Required"},length:{min:0,max:256,message:"Invalid length",validate:function(e){var i=this.val().replace(/\n/g,"\r\n").length,t=!0;return t&=e.max?e.max>=i:!0,t&=e.min?i>=e.min:!0}},numeric:{validate:function(){return/^\d+$/i.test(this.val())},message:"Numeric only"}}},s),a=this,l=e(this),r={},h={},d=[],o=0,u=function(){if(i&&n.plugins)for(var e in n.plugins)i[e]&&(r[e]=new t(e,n.plugins[e],a))},f=function(i,t){if(e.isArray(t)?t||(t=[]):t=[t],h[i])if(e.isArray(h[i]))for(var s in h[i])h[i][s].apply(a,t);else h[i].apply(a,t);for(var s in r)r[s][i]&&e.isFunction(r[s][i])&&r[s][i].apply(r[s],t)},v=function(e,i){return h[e]?h[e].push(i):h[e]=[i],this},c=function(){for(var i in n)"on"===i.slice(0,2)&&(e.isFunction(n[i])||e.isArray(n[i]))&&v(i,n[i])},g=function(i){i=i instanceof R||void 0!==i.field?i:{field:i},i.field instanceof String&&(i.field=e(i.field));for(var t in d){var s=d[t].field;if(s[0]==i.field[0]||s.attr("id")&&s.attr("id")==i.field.attr("id"))return t}return-1},m=function(i,t){if(i)if(e.isArray(i))for(var s in i)i[s].field.length>1?e.each(i[s].field,function(){m({field:e(this),rules:i[s].rules})}):m(i[s]);else if(i.field instanceof String||void 0!==i.field&&i.field.attr("id")){var s=g(i);if(s>-1&&void 0!==i.rules)for(var a in i.rules)d[s].rules[a]&&d[s].rules[a]._destroy(),d[s].rules[a]=new A(a,d[s].rules[a]?d[s]:i,i.rules[a]);else if(-1==s){var r=new R(i,n);if(n.reconcileFieldOrder){var h=l.find(n.inputSelector).index(i.field);d.splice(h>-1?h:d.length,0,r)}else d.push(r);f("onFieldAdded",r)}t&&y()}},p=function(){for(var e in d)d[e]._destroy();d=[],o=0,y()},_=function(e){var i=g(e);i>-1&&(d[i]._destroy(),y())},C=function(e,i,t){var s=g(i);s>-1&&d[s]._toggle(e,t)},b=function(i){if(e.isArray(i))for(var t in i)b(i[t]);else{var t=g(i.field);t>-1&&d[t].setstate(i.rules)}},O=function(e){if(e){var i=g(e);if(i>-1){d[i].valid=!0;for(var t in d[i].rules)d[i].rules[t].valid=!0}}else for(var i in d){d[i].valid=!0;for(var t in d[i].rules)d[i].rules[t].valid=!0}y()},y=function(){o=0;for(var e in d){var i=d[e];i.enabled&&(i.valid||o++,i._refresh())}n.messageContainer&&n.messageContainer.toggle(n.messageContainer.find("."+n.messageElementClass).filter(":plVisible").length>0)},F=function(){var e=!0,i=!1;for(var t in d)e&=d[t].validate(arguments,!1,!1,!1),!n.focusFirstInvalidField||e||i||(f("onInvalidFieldFocus",d[t]),d[t].field.focus(),i=!0);return y(),e=Boolean(e),f("onFormValidate",[d,e]),e},S=function(i){if(!(i instanceof Array)){var t=-1,s=null;if(e.isPlainObject(i)&&i.field&&i.rules&&(e.isArray(i.rules)||"string"==typeof i.rules)?(t=g(i.field),s=i.rule?[i.rule]:i.rules):t=g(i),-1==t)throw"Field `"+(i instanceof jQuery?i.selector:i)+"` cannot be found.";return d[t].validate(null,!0,!0,!1,s)}for(var t in i)S(i[t])},x=function(e,i){if(n.rules[e]){var t=n.rules[e].validate(i);return n.rules[e].message&&n.rules[e]._refresh(),t}return!1},R=function(i){this._={valid:!0},this.valid=this.enabled=!0,this.validateOnChange=this.container=this.field=null,this.rules={};for(var t in i)"rules"!==t&&"_"!==t&&(this[t]=i[t]);(this.validateOnChange||n.validateOnChange&&this.validateOnChange!==!1)&&this.field.on("change.pliant",e.proxy(function(){this.validate(null,!0,!1,!0)},this)),this.container&&this.container.hide();for(var t in i.rules)this.rules[t]=new A(t,this,i.rules[t])};R.prototype={_destroy:function(){f("onFieldRemoved",this),this.field.off(".pliant").removeClass(n.inputClass);for(var e in this.rules)this.rules[e]._destroy();d.splice(e,1)},_refresh:function(){for(var e in this.rules)this.enabled||(this.rules[e].valid=!0),this.valid&=this.rules[e].valid,this.rules[e]._refresh();this.field.toggleClass(n.inputClass,!this.valid),this.container&&this.container.toggle(this.container.find("."+n.messageElementClass).filter(":plVisible").length>0)},_toggle:function(e,i){if(i){for(var t in this.rules)if(t===i){this.rules[t]._toggle(e);break}}else this.enabled=e,this.valid||e||(this.valid=!0),this._refresh(),f("onFieldToggle",this)},setstate:function(e){this.valid=!0;for(var i in e)this.valid&=this.rules[i].valid=e[i];this._refresh()},validate:function(i,t,s,a,l){if(this._.valid=this.valid,this.valid=!0,!(!this.enabled||this.field.is(":disabled")&&n.ignoreDisabled||this.field.is(":hidden")&&n.ignoreHidden||a&&e.isFunction(this.validateOnChange)&&this.validateOnChange.call(this.field,this)===!1)){f("onPreFieldValidate",this);for(var r in this.rules){var h=this.rules[r];l&&l.length>0&&-1===l.indexOf(r)||!h.enabled||n.haltOnFirstInvalidRule&&!this.valid?h.valid=!0:this.valid&=h._validate(a,i)}t&&y(),f("onPostFieldValidate",this),n.validateOnChange&&f("onFieldValidate",this),this.chain&&!s&&a&&S(this.chain)}return this.valid}};var A=function(e,i,t){this.message=this.validate=this.inherit=this.messageWrap=this.container=this.validateOnChange=this.expectedResult=null,this._={message:null,field:i.field,name:e},this.valid=this.enabled=!0;for(var s in t)"_"!==s&&(this[s]=t[s]);!this.container&&i.container&&(this.container=i.container),this._init()};if(A.prototype={_init:function(){var i=n.rules[this._.name],t=i&&i.inherit&&n.rules[i.inherit]?n.rules[i.inherit]:null;if((void 0===this.message||void 0!==this.validate&&!e.isFunction(this.validate))&&!i)throw"Rule `"+this._.name+"` is invalid.";(i||this.message)&&(this._extend(i),this._extend(t),this._.message=this.message,this.message=e(n.messageElement).addClass(n.messageElementClass).append(this.message),this.message.is("label")&&this.message.attr("for",this._.field.attr("id")),n.messageWrap&&(this.message=e(n.messageWrap).addClass(n.messageWrapClass).append(this.message)),this.message.hide(),this.container&&this.container.hide(),n.onMessagePlacement?f("onMessagePlacement",[this._.field,this.message]):this.container?e(this.container).append(this.message):n.messageContainer?n.messageContainer.append(this.message):this._.field.after(this.message),n.appendRulesToFieldClass&&this._.field.addClass(this._.name))},_validate:function(i,t){if(this.enabled){if(void 0!==this.validateOnChange&&this.validateOnChange!==!0&&i&&(e.isFunction(this.validateOnChange)&&this.validateOnChange.call(this._.field,this)===!1||this.validateOnChange===!1))return this.valid=!0,this.valid;this.ResetMessage();var s=this.validate?this.validate.apply(this._.field,t?e.merge([this],t):[this]):!0;return this.valid=this.expectedResult?s===this.expectedResult:s,this.valid}},_refreshContainer:function(){this.container&&this.container.toggle(this.container.find("."+n.messageElementClass).filter(":plVisible").length>0)},_refresh:function(){this.message.toggle(!this.valid),this._refreshContainer()},_extend:function(e){if(e)for(var i in e)null==this[i]&&"inherit"!==i&&(this[i]=e[i])},_destroy:function(){this.message.remove(),n.appendRulesToFieldClass&&this._.field.removeClass(this._.name)},_toggle:function(e){this.enabled=e,this.valid||e||(this.valid=!0),n.appendRulesToFieldClass&&this._.field.toggleClass(this._.name,e),f("onRuleToggle",[this._.name,this._.field,this])},ResetMessage:function(){this._.message&&this.message[0].innerHTML!==this._.message&&this.message.html(this._.message)},SetMessage:function(e){e.length>0&&this.message.html(e)}},n.hideMessageContainerOnLoad&&n.messageContainer&&n.messageContainer.hide(),n.validateOnSubmit){var E=function(e){F()||e.preventDefault()};if(n.validateOnSubmitSelector){var M=l;n.validateOnSubmitScope&&(M=n.validateOnSubmitScope instanceof jQuery?n.validateOnSubmitScope:e(n.validateOnSubmitScope)),M.on(n.validateOnSubmitEvent||"click",n.validateOnSubmitSelector instanceof jQuery?n.validateOnSubmitSelector.selector:n.validateOnSubmitSelector,E)}else l.is("form")&&l.on("submit",E)}return u(),c(),m(n.fields),y(),this._fields=d,this.on=v,this.validate=F,this.reset=O,this.clear=p,this.validateField=S,this.validateRule=x,this.totalFields=function(){return d.length},this.fields=function(){return d},this.invalidCount=function(){return o},this.add=function(e){return m(e,!0)},this.remove=_,this.toggle=C,this.state=b,this.destroy=function(){O(),p(),h=[]},this.option=function(e,i){return void 0===i?n[e]:(n[e]=i,void 0)},f("onReady"),this}})(jQuery);