|
|
/* * # Semantic UI * git://github.com/Semantic-Org/Semantic-UI.git#1.0
* * * Copyright 2014 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT
* */ !function(e,t,n,i){e.fn.form=function(t,r){var o,a=e(this),s=e.extend(!0,{},e.fn.form.settings,r),l=e.extend({},e.fn.form.settings.defaults,t),u=s.namespace,c=s.metadata,d=s.selector,f=s.className,m=(s.error,"."+u),p="module-"+u,v=a.selector||"",g=(new Date).getTime(),h=[],b=arguments[0],y="string"==typeof b,z=[].slice.call(arguments,1);return a.each(function(){var t,r=e(this),u=e(this).find(d.field),k=e(this).find(d.group),x=e(this).find(d.message),w=(e(this).find(d.prompt),e(this).find(d.submit)),E=[],C=this,T=r.data(p);t={initialize:function(){t.verbose("Initializing form validation",r,l,s),t.bindEvents(),t.instantiate()},instantiate:function(){t.verbose("Storing instance of module",t),T=t,r.data(p,t)},destroy:function(){t.verbose("Destroying previous module",T),t.removeEvents(),r.removeData(p)},refresh:function(){t.verbose("Refreshing selector cache"),u=r.find(d.field)},submit:function(){t.verbose("Submitting form",r),r.submit()},attachEvents:function(n,i){i=i||"submit",e(n).on("click",function(e){t[i](),e.preventDefault()})},bindEvents:function(){s.keyboardShortcuts&&u.on("keydown"+m,t.event.field.keydown),r.on("submit"+m,t.validate.form),u.on("blur"+m,t.event.field.blur),t.attachEvents(w,"submit"),u.each(function(){var n=e(this).prop("type"),i=t.get.changeEvent(n);e(this).on(i+m,t.event.field.change)})},removeEvents:function(){r.off(m),u.off(m),w.off(m),u.off(m)},event:{field:{keydown:function(n){var i=e(this),r=n.which,o={enter:13,escape:27};r==o.escape&&(t.verbose("Escape key pressed blurring field"),i.blur()),!n.ctrlKey&&r==o.enter&&i.is(d.input)&&i.not(d.checkbox).size()>0&&(t.debug("Enter key pressed, submitting form"),w.addClass(f.down),i.one("keyup"+m,t.event.field.keyup))},keyup:function(){t.verbose("Doing keyboard shortcut form submit"),w.removeClass(f.down),t.submit()},blur:function(){var n=e(this),i=n.closest(k);i.hasClass(f.error)?(t.debug("Revalidating field",n,t.get.validation(n)),t.validate.field(t.get.validation(n))):("blur"==s.on||"change"==s.on)&&t.validate.field(t.get.validation(n))},change:function(){var n=e(this),i=n.closest(k);("change"==s.on||i.hasClass(f.error)&&s.revalidate)&&(clearTimeout(t.timer),t.timer=setTimeout(function(){t.debug("Revalidating field",n,t.get.validation(n)),t.validate.field(t.get.validation(n))},s.delay))}}},get:{changeEvent:function(e){return"checkbox"==e||"radio"==e?"change":n.createElement("input").oninput!==i?"input":n.createElement("input").onpropertychange!==i?"propertychange":"keyup"},field:function(n){return t.verbose("Finding field with identifier",n),u.filter("#"+n).size()>0?u.filter("#"+n):u.filter('[name="'+n+'"]').size()>0?u.filter('[name="'+n+'"]'):u.filter("[data-"+c.validate+'="'+n+'"]').size()>0?u.filter("[data-"+c.validate+'="'+n+'"]'):e("<input/>")},validation:function(n){var i;return e.each(l,function(e,r){t.get.field(r.identifier).get(0)==n.get(0)&&(i=r)}),i||!1}},has:{field:function(e){return t.verbose("Checking for existence of a field with identifier",e),u.filter("#"+e).size()>0?!0:u.filter('[name="'+e+'"]').size()>0?!0:u.filter("[data-"+c.validate+'="'+e+'"]').size()>0?!0:!1}},add:{prompt:function(n,o){var a=t.get.field(n),l=a.closest(k),u=l.find(d.prompt),c=0!==u.size();o="string"==typeof o?[o]:o,t.verbose("Adding field error state",n),l.addClass(f.error),s.inline&&(c||(u=s.templates.prompt(o),u.appendTo(l)),u.html(o[0]),c?t.verbose("Inline errors are disabled, no inline error added",n):s.transition&&e.fn.transition!==i&&r.transition("is supported")?(t.verbose("Displaying error with css transition",s.transition),u.transition(s.transition+" in",s.duration)):(t.verbose("Displaying error with fallback javascript animation"),u.fadeIn(s.duration)))},errors:function(e){t.debug("Adding form error messages",e),x.html(s.templates.error(e))}},remove:{prompt:function(n){var o=t.get.field(n.identifier),a=o.closest(k),l=a.find(d.prompt);a.removeClass(f.error),s.inline&&l.is(":visible")&&(t.verbose("Removing prompt for field",n),s.transition&&e.fn.transition!==i&&r.transition("is supported")?l.transition(s.transition+" out",s.duration,function(){l.remove()
|